Как настроить пробную версию для библиотеки динамических ссылок?
Я разрабатываю условно-бесплатную SDK-подобную библиотеку (с использованием C++). Библиотека представляет собой простой dll, предоставляет некоторые функции. Итак, мой первый вопрос: какие типы испытаний возможны для простых DLL? Я не хочу сокращать функциональность пробной DLL, поэтому я склонен использовать временную пробу.
Я примерно понимаю, как отслеживать время использования библиотеки, поэтому второй вопрос - как указать истечение пробного периода?
Есть две идеи для настоящего времени:
По истечении периода оценки библиотека не сможет загрузиться.
или же
- По истечении периода оценки библиотека успешно загрузится, но отобразит своего рода экран.
Но оба они кажутся довольно грубыми, поэтому не могли бы вы дать несколько советов по этому поводу?
Спасибо!
3 ответа
Вы можете вызвать ошибку "Срок действия пробной лицензии истек", когда вы вызываете одну из ваших функций DLL. Это более четко и понятно для пользователя.
my2cents
В (1) вам придется потерпеть неудачу в DllMain() по истечении срока. Это не очень хорошо, если ваша DLL присутствовала в таблице импорта программы, которая использует вашу DLL.
В (2) у вас больше выбора и это более дружелюбно ИМХО.
Просто установите внутренний флаг по истечении срока действия, а затем отобразите диалоговое окно.
Если пользователь продолжает вызывать ваши экспортированные функции, вы проверяете флаг и не выполняете все вызовы функций в вашей DLL.
В идеале, если у вас есть функция init в вашей DLL, тогда при вызове init() выведите диалоговое окно истечения срока действия и верните специальный код, чтобы разработчик также знал и существовал в своей программе.
HTH, Элиас
Если я правильно вас понимаю после истечения срока действия, вы не хотите, чтобы люди вызывали функции из таблицы экспорта вашей Dll.
Обратите внимание, что если ваша Dll успешно загружается, люди все равно смогут вызывать ваш Dll-код, даже если отображается всплывающий экран. Таким образом, вам придется охранять все экспортируемые функции с помощью проверки времени.
Переход на простой экран имеет несколько недостатков: а) разработчикам не нравится, когда сторонние библиотеки открывают свои собственные экранные изображения. б) Что если вы используете lib в приложении без пользовательского интерфейса (например, в сервисе, который не взаимодействует с рабочим столом)?
На мой взгляд, лучше всего было бы разрешить загрузку библиотеки (для случаев, когда ваш Dll находится в IAT других модулей), но все экспортированные функции вашего интерфейса возвращают код ошибки, если пробная версия истекла. Таким образом, приложение, использующее вашу библиотеку, может игнорировать функциональность вашего Dll или отображать сообщение о том, что срок его действия истек.
Надеюсь это поможет.