|
DLL hell
|
|||
---|---|---|---|
#18+
Использую в программах покупной DLL, обращение к нему идет после прописания в коде моей программы регистрационного ключа к этому DLL. Покупал его лет 10 назад, все это время работало без проблем. Но тут на одном из компов клиента обнаруживается этот же DLL более свежей версии и мне выдает, что мой ключ недействителен. Не могу понять, это нормально или нет? Если да, то получается, что разработчик DLL каждый год может выпускать новую версию, на которую я могу натыкаться у того или иного клиента, и получается, что мне из-за этого придется все время покупать свежую версию этой DLL? Хотя меня вполне устраивает старая. Можно ли как-то на одном компе использовать разные версии одной и той же DLL? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2021, 13:17 |
|
DLL hell
|
|||
---|---|---|---|
#18+
Положи свою версию DLL в папку где твой EXE. В остальном разработчик может все. Читай что у него в лицензии написано, или на сайте условия использования. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2021, 13:50 |
|
DLL hell
|
|||
---|---|---|---|
#18+
Pantalone получается, что разработчик DLL каждый год может выпускать новую версию, на которую я могу натыкаться у того или иного клиента, и получается, что мне из-за этого придется все время покупать свежую версию этой DLL? Pantalone Можно ли как-то на одном компе использовать разные версии одной и той же DLL? https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order Если кратко - клади нужную версию DLL в тот же каталог что и EXE. Не забывай перед запуском этой программы, выгружать из памяти те которые используют другую версию DLL. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2021, 14:54 |
|
DLL hell
|
|||
---|---|---|---|
#18+
Dima T Положи свою версию DLL в папку где твой EXE. White Owl Если кратко - клади нужную версию DLL в тот же каталог что и EXE. Не забывай перед запуском этой программы, выгружать из памяти те которые используют другую версию DLL. К сожалению, это не работает. В системе зарегистрирована DLL с более свежей версией, кладу в папку свою и программа ноль внимания на нее. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2021, 15:04 |
|
DLL hell
|
|||
---|---|---|---|
#18+
Pantalone К сожалению, это не работает. В системе зарегистрирована DLL с более свежей версией, кладу в папку свою и программа ноль внимания на нее. Скорее всего тут используется COM-сервер, код которого расположен в DLL. В этом случае где брать DLL читается из реестра виндавса. Чисто теоретически можно попробовать перехватить это чтение и подменить ответ, но муторно это. К разработчикам DLL обращался? Что они говорят по этому поводу? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2021, 15:09 |
|
DLL hell
|
|||
---|---|---|---|
#18+
Dima T К разработчикам DLL обращался? Что они говорят по этому поводу? Денег хотят, ожидаемо. Буду Side-by-side Assembly копать, там вроде через манифест можно заставить работать с DLL в своей папке без регистрации в системе. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2021, 15:19 |
|
DLL hell
|
|||
---|---|---|---|
#18+
Dima T Pantalone К сожалению, это не работает. В системе зарегистрирована DLL с более свежей версией, кладу в папку свою и программа ноль внимания на нее. Скорее всего тут используется COM-сервер, код которого расположен в DLL. В этом случае где брать DLL читается из реестра виндавса. если dll с таким именем загружена в память программой A, то при старте программы B новая dll из другого каталога не будет загружаться вообще. Читайте доку (ссылку я уже дал). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2021, 15:23 |
|
DLL hell
|
|||
---|---|---|---|
#18+
Pantalone, А если твоя программа требующая старую версию - полностью твоя (в смысле ты ее написал или хотя-бы можешь поправить), то загружай нужную dll по абсолютному пути, либо прописывай манифест (который тоже использует абсолютный путь). Тогда ОС не будет искать dll а загрузит то что ей сказано. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2021, 15:29 |
|
DLL hell
|
|||
---|---|---|---|
#18+
White Owl А если твоя программа требующая старую версию - полностью твоя (в смысле ты ее написал или хотя-бы можешь поправить), то загружай нужную dll по абсолютному пути, либо прописывай манифест (который тоже использует абсолютный путь). Тогда ОС не будет искать dll а загрузит то что ей сказано. Моя. А не подскажете куда копать насчет загрузки по абсолютному пути, статейку какую может знаете? Манифест имеете в виду Side-by-side Assembly? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2021, 15:33 |
|
DLL hell
|
|||
---|---|---|---|
#18+
Pantalone White Owl А если твоя программа требующая старую версию - полностью твоя (в смысле ты ее написал или хотя-бы можешь поправить), то загружай нужную dll по абсолютному пути, либо прописывай манифест (который тоже использует абсолютный путь). Тогда ОС не будет искать dll а загрузит то что ей сказано. Моя. А не подскажете куда копать насчет загрузки по абсолютному пути, статейку какую может знаете? Манифест имеете в виду Side-by-side Assembly? https://docs.microsoft.com/en-us/windows/win32/dlls/run-time-dynamic-linking все что нужно знать о dll есть здесь. Вернее что есть здесь и по ссылка отсюда - нужно знать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2021, 15:44 |
|
DLL hell
|
|||
---|---|---|---|
#18+
White Owl Нет, вернее этот вариант тоже может быть, но есть ответ и попроще: если dll с таким именем загружена в память программой A, то при старте программы B новая dll из другого каталога не будет загружаться вообще. Читайте доку (ссылку я уже дал). Опыт не подтверждает: ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2021, 05:40 |
|
DLL hell
|
|||
---|---|---|---|
#18+
Pantalone Можно ли как-то на одном компе использовать разные версии одной и той же DLL? Я решал не совсем такую, но чем-то похожую задачу: мне нужно было, чтобы COM-сервер для одних приложений работал, а для других выдавал ошибку/терминировал приложение. Действовал так: InProc сервер - это длл, которая экспортирует 4 функции: DllGetClassObject, DllCanUnloadNow, DllRegisterServer, DllUnregisterServer. Написал свою прокси-длл, которая экспортирует те же функции, загружает оригинальную длл, сохраненную под другим именем и, в зависимости от имени процесса, либо форвадит вызовы оригинальной длл, либо формирует ошибку/терминирует процесс. Прокси библиотеку положил на место оригинальной ( с именем оригинальной). В Вашем случае можно действовать аналогично - если имя Вашего процесса, подгружается старая длл, иначе - новая, затем вызовы форвардятся куда нужно ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2021, 05:57 |
|
DLL hell
|
|||
---|---|---|---|
#18+
Pantalone Использую в программах покупной DLL, обращение к нему идет после прописания в коде моей программы регистрационного ключа к этому DLL. Покупал его лет 10 назад, все это время работало без проблем. Но тут на одном из компов клиента обнаруживается этот же DLL более свежей версии и мне выдает, что мой ключ недействителен. Не могу понять, это нормально или нет? Если да, то получается, что разработчик DLL каждый год может выпускать новую версию, на которую я могу натыкаться у того или иного клиента, и получается, что мне из-за этого придется все время покупать свежую версию этой DLL? Хотя меня вполне устраивает старая. Можно ли как-то на одном компе использовать разные версии одной и той же DLL? Зачем ты используешь новую версию DLL? Используй всегда старую и не будет никаких проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2021, 12:14 |
|
DLL hell
|
|||
---|---|---|---|
#18+
White Owl Dima T пропущено... Скорее всего тут используется COM-сервер, код которого расположен в DLL. В этом случае где брать DLL читается из реестра виндавса. если dll с таким именем загружена в память программой A, то при старте программы B новая dll из другого каталога не будет загружаться вообще . Читайте доку (ссылку я уже дал). Как вы себе это представляете? Это же прямой путь разрушить работу компьютера вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2021, 20:32 |
|
DLL hell
|
|||
---|---|---|---|
#18+
Pantalone Dima T К разработчикам DLL обращался? Что они говорят по этому поводу? Денег хотят, ожидаемо. Буду Side-by-side Assembly копать, там вроде через манифест можно заставить работать с DLL в своей папке без регистрации в системе. Я думаю что не стоит в теме топика развивать идеи обхода лицензий. Создатель не предполагал такого use-case - значит надо с ним договариваться. Лицензния на пользователя или на физический хост. С одной стороны тема топика выглядит невинно. Но как на нее посмотреть... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 00:22 |
|
DLL hell
|
|||
---|---|---|---|
#18+
petrav White Owl Читайте доку (ссылку я уже дал). Как вы себе это представляете? Это же прямой путь разрушить работу компьютера вообще. И вообще, прежде чем спорить и возмущаться - прочитайте документацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 14:47 |
|
DLL hell
|
|||
---|---|---|---|
#18+
White Owl petrav пропущено... Как вы себе это представляете? Это же прямой путь разрушить работу компьютера вообще. И вообще, прежде чем спорить и возмущаться - прочитайте документацию. Я настолько впечатлился, что решил восстановить акк тысячелетней давности. ... Ведь почти 13000 сообщений у человека... ... ... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 15:03 |
|
DLL hell
|
|||
---|---|---|---|
#18+
mayton Я думаю что не стоит в теме топика развивать идеи обхода лицензий. Создатель не предполагал такого use-case - значит надо с ним договариваться. Лицензния на пользователя или на физический хост. Имхо, ТС в своем праве. Он разработал софт, использующий стороннюю библиотеку легально (на момент создания). Если условия лицензирования нам неизвестны (а они неизвестны), ТС не должен доказывать, что он не верблюд. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2021, 11:38 |
|
DLL hell
|
|||
---|---|---|---|
#18+
Pantalone К сожалению, это не работает. В системе зарегистрирована DLL с более свежей версией, кладу в папку свою и программа ноль внимания на нее. Это баг разработчика. Если он такие косяки допускает, что разные версии COM DLL имеют одинаковый GUID. За такое надо руки отрывать и по голове стучать. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2021, 11:53 |
|
DLL hell
|
|||
---|---|---|---|
#18+
Pantalone Dima T К разработчикам DLL обращался? Что они говорят по этому поводу? Денег хотят, ожидаемо. Буду Side-by-side Assembly копать, там вроде через манифест можно заставить работать с DLL в своей папке без регистрации в системе. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 22:39 |
|
|
start [/forum/topic.php?fid=16&msg=40081821&tid=1339648]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 241ms |
total: | 382ms |
0 / 0 |