powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / DLL hell
20 сообщений из 20, страница 1 из 1
DLL hell
    #40081787
Pantalone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую в программах покупной DLL, обращение к нему идет после прописания в коде моей программы регистрационного ключа к этому DLL. Покупал его лет 10 назад, все это время работало без проблем. Но тут на одном из компов клиента обнаруживается этот же DLL более свежей версии и мне выдает, что мой ключ недействителен. Не могу понять, это нормально или нет? Если да, то получается, что разработчик DLL каждый год может выпускать новую версию, на которую я могу натыкаться у того или иного клиента, и получается, что мне из-за этого придется все время покупать свежую версию этой DLL? Хотя меня вполне устраивает старая.
Можно ли как-то на одном компе использовать разные версии одной и той же DLL?
...
Рейтинг: 0 / 0
DLL hell
    #40081792
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Положи свою версию DLL в папку где твой EXE.

В остальном разработчик может все. Читай что у него в лицензии написано, или на сайте условия использования.
...
Рейтинг: 0 / 0
DLL hell
    #40081817
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pantalone
получается, что разработчик DLL каждый год может выпускать новую версию, на которую я могу натыкаться у того или иного клиента, и получается, что мне из-за этого придется все время покупать свежую версию этой DLL?
Да.

Pantalone
Можно ли как-то на одном компе использовать разные версии одной и той же DLL?
Можно.
https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order
Если кратко - клади нужную версию DLL в тот же каталог что и EXE. Не забывай перед запуском этой программы, выгружать из памяти те которые используют другую версию DLL.
...
Рейтинг: 0 / 0
DLL hell
    #40081819
Pantalone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Положи свою версию DLL в папку где твой EXE.

White Owl

Если кратко - клади нужную версию DLL в тот же каталог что и EXE. Не забывай перед запуском этой программы, выгружать из памяти те которые используют другую версию DLL.

К сожалению, это не работает. В системе зарегистрирована DLL с более свежей версией, кладу в папку свою и программа ноль внимания на нее.
...
Рейтинг: 0 / 0
DLL hell
    #40081821
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pantalone
К сожалению, это не работает. В системе зарегистрирована DLL с более свежей версией, кладу в папку свою и программа ноль внимания на нее.

Скорее всего тут используется COM-сервер, код которого расположен в DLL. В этом случае где брать DLL читается из реестра виндавса. Чисто теоретически можно попробовать перехватить это чтение и подменить ответ, но муторно это.

К разработчикам DLL обращался? Что они говорят по этому поводу?
...
Рейтинг: 0 / 0
DLL hell
    #40081827
Pantalone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T

К разработчикам DLL обращался? Что они говорят по этому поводу?

Денег хотят, ожидаемо.
Буду Side-by-side Assembly копать, там вроде через манифест можно заставить работать с DLL в своей папке без регистрации в системе.
...
Рейтинг: 0 / 0
DLL hell
    #40081830
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Pantalone
К сожалению, это не работает. В системе зарегистрирована DLL с более свежей версией, кладу в папку свою и программа ноль внимания на нее.

Скорее всего тут используется COM-сервер, код которого расположен в DLL. В этом случае где брать DLL читается из реестра виндавса.
Нет, вернее этот вариант тоже может быть, но есть ответ и попроще:
если dll с таким именем загружена в память программой A, то при старте программы B новая dll из другого каталога не будет загружаться вообще. Читайте доку (ссылку я уже дал).
...
Рейтинг: 0 / 0
DLL hell
    #40081835
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pantalone,

А если твоя программа требующая старую версию - полностью твоя (в смысле ты ее написал или хотя-бы можешь поправить), то загружай нужную dll по абсолютному пути, либо прописывай манифест (который тоже использует абсолютный путь). Тогда ОС не будет искать dll а загрузит то что ей сказано.
...
Рейтинг: 0 / 0
DLL hell
    #40081836
Pantalone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
А если твоя программа требующая старую версию - полностью твоя (в смысле ты ее написал или хотя-бы можешь поправить), то загружай нужную dll по абсолютному пути, либо прописывай манифест (который тоже использует абсолютный путь). Тогда ОС не будет искать dll а загрузит то что ей сказано.

Моя. А не подскажете куда копать насчет загрузки по абсолютному пути, статейку какую может знаете?
Манифест имеете в виду Side-by-side Assembly?
...
Рейтинг: 0 / 0
DLL hell
    #40081841
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pantalone
White Owl
А если твоя программа требующая старую версию - полностью твоя (в смысле ты ее написал или хотя-бы можешь поправить), то загружай нужную dll по абсолютному пути, либо прописывай манифест (который тоже использует абсолютный путь). Тогда ОС не будет искать dll а загрузит то что ей сказано.

Моя. А не подскажете куда копать насчет загрузки по абсолютному пути, статейку какую может знаете?
Манифест имеете в виду Side-by-side Assembly?

https://docs.microsoft.com/en-us/windows/win32/dlls/run-time-dynamic-linking
все что нужно знать о dll есть здесь. Вернее что есть здесь и по ссылка отсюда - нужно знать :)
...
Рейтинг: 0 / 0
DLL hell
    #40081983
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Нет, вернее этот вариант тоже может быть, но есть ответ и попроще:
если dll с таким именем загружена в память программой A, то при старте программы B новая dll из другого каталога не будет загружаться вообще. Читайте доку (ссылку я уже дал).


Опыт не подтверждает:
...
Рейтинг: 0 / 0
DLL hell
    #40081985
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pantalone

Можно ли как-то на одном компе использовать разные версии одной и той же DLL?


Я решал не совсем такую, но чем-то похожую задачу: мне нужно было, чтобы COM-сервер для одних приложений работал, а для других выдавал ошибку/терминировал приложение.
Действовал так:
InProc сервер - это длл, которая экспортирует 4 функции: DllGetClassObject, DllCanUnloadNow, DllRegisterServer, DllUnregisterServer. Написал свою прокси-длл, которая экспортирует те же функции, загружает оригинальную длл, сохраненную под другим именем и, в зависимости от имени процесса, либо форвадит вызовы оригинальной длл, либо формирует ошибку/терминирует процесс. Прокси библиотеку положил на место оригинальной ( с именем оригинальной).

В Вашем случае можно действовать аналогично - если имя Вашего процесса, подгружается старая длл, иначе - новая, затем вызовы форвардятся куда нужно
...
Рейтинг: 0 / 0
DLL hell
    #40082050
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pantalone
Использую в программах покупной DLL, обращение к нему идет после прописания в коде моей программы регистрационного ключа к этому DLL. Покупал его лет 10 назад, все это время работало без проблем. Но тут на одном из компов клиента обнаруживается этот же DLL более свежей версии и мне выдает, что мой ключ недействителен. Не могу понять, это нормально или нет? Если да, то получается, что разработчик DLL каждый год может выпускать новую версию, на которую я могу натыкаться у того или иного клиента, и получается, что мне из-за этого придется все время покупать свежую версию этой DLL? Хотя меня вполне устраивает старая.
Можно ли как-то на одном компе использовать разные версии одной и той же DLL?


Зачем ты используешь новую версию DLL? Используй всегда старую и не будет никаких проблем.
...
Рейтинг: 0 / 0
DLL hell
    #40083169
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Dima T
пропущено...

Скорее всего тут используется COM-сервер, код которого расположен в DLL. В этом случае где брать DLL читается из реестра виндавса.
Нет, вернее этот вариант тоже может быть, но есть ответ и попроще:
если dll с таким именем загружена в память программой A, то при старте программы B новая dll из другого каталога не будет загружаться вообще . Читайте доку (ссылку я уже дал).

Как вы себе это представляете? Это же прямой путь разрушить работу компьютера вообще.
...
Рейтинг: 0 / 0
DLL hell
    #40083183
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pantalone
Dima T

К разработчикам DLL обращался? Что они говорят по этому поводу?

Денег хотят, ожидаемо.
Буду Side-by-side Assembly копать, там вроде через манифест можно заставить работать с DLL в своей папке без регистрации в системе.

Я думаю что не стоит в теме топика развивать идеи обхода лицензий. Создатель не предполагал такого use-case
- значит надо с ним договариваться. Лицензния на пользователя или на физический хост. С одной стороны тема
топика выглядит невинно. Но как на нее посмотреть...
...
Рейтинг: 0 / 0
DLL hell
    #40083221
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
White Owl
Читайте доку (ссылку я уже дал).

Как вы себе это представляете? Это же прямой путь разрушить работу компьютера вообще.
А попытайся догадаться откуда взялось понятие "DLL Hell".
И вообще, прежде чем спорить и возмущаться - прочитайте документацию.
...
Рейтинг: 0 / 0
DLL hell
    #40083223
Mastack1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
petrav
пропущено...

Как вы себе это представляете? Это же прямой путь разрушить работу компьютера вообще.
А попытайся догадаться откуда взялось понятие "DLL Hell".
И вообще, прежде чем спорить и возмущаться - прочитайте документацию.

Я настолько впечатлился, что решил восстановить акк тысячелетней давности.
...
Ведь почти 13000 сообщений у человека... ... ...
...
Рейтинг: 0 / 0
DLL hell
    #40083328
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я думаю что не стоит в теме топика развивать идеи обхода лицензий. Создатель не предполагал такого use-case
- значит надо с ним договариваться. Лицензния на пользователя или на физический хост.
А имеет ли место в топике попытка обхода лицензий? Может наоборот, разработчик DLL хочет взять денег два раза за одно и то же (очень похоже на то, кстати)?
Имхо, ТС в своем праве. Он разработал софт, использующий стороннюю библиотеку легально (на момент создания). Если условия лицензирования нам неизвестны (а они неизвестны), ТС не должен доказывать, что он не верблюд.
...
Рейтинг: 0 / 0
DLL hell
    #40083336
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pantalone
К сожалению, это не работает. В системе зарегистрирована DLL с более свежей версией, кладу в папку свою и программа ноль внимания на нее.


Это баг разработчика. Если он такие косяки допускает, что разные версии COM DLL имеют одинаковый GUID. За такое надо руки отрывать и по голове стучать.
...
Рейтинг: 0 / 0
DLL hell
    #40084269
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pantalone
Dima T

К разработчикам DLL обращался? Что они говорят по этому поводу?

Денег хотят, ожидаемо.
Буду Side-by-side Assembly копать, там вроде через манифест можно заставить работать с DLL в своей папке без регистрации в системе.
направление правильное, в манифест и надо добавить - тынц
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / DLL hell
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]