Как настроить пробную версию библиотеки с динамическими ссылками?

Я разрабатываю условно-бесплатную sdk-подобную библиотеку (используя C++). Библиотека представляет собой простую dll, предоставляющую некоторые функции. Итак, мой первый вопрос: какие типы испытаний возможны для простой dll? Я не хочу сокращать функциональность пробной dll, поэтому предпочитаю использовать временную пробную версию.

Я примерно понимаю, как отслеживать время использования lib, поэтому второй вопрос, как указать истечение пробного периода?

На данный момент есть две идеи:

  1. По истечении ознакомительного периода библиотека не сможет загрузиться.

    or

  2. После истечения ознакомительного периода библиотека успешно загрузится, но будет отображать какой-то придирчивый экран.

Но оба они кажутся довольно грубыми, поэтому не могли бы вы дать несколько советов по этому поводу?

Спасибо!


person DenisL    schedule 27.11.2009    source источник
comment
Спасибо всем за ваши ответы! Я решил использовать следующий метод: разрешить загрузку библиотеки и вернуть код ошибки, когда приложение вызывает одну из моих функций dll, если пробный период истек.   -  person DenisL    schedule 30.11.2009


Ответы (3)


Вы можете вызвать ошибку «истек срок действия пробной лицензии», когда кто-то вызывает одну из ваших функций DLL. Он более нагляден и понятен пользователю.

my2cents
person neuro    schedule 27.11.2009

В (1) вам придется потерпеть неудачу в DllMain() по истечении срока действия. Это не так уж хорошо, если ваша DLL присутствовала в таблице импорта программы, которая использует вашу DLL.

В (2) у вас больше выбора и это более дружелюбно ИМХО.

Просто установите внутренний флаг по истечении срока действия, а затем отобразите диалоговое окно.

Если пользователь продолжает вызывать ваши экспортированные функции, вы проверяете флаг и отказываете во всех вызовах функций вашей DLL.

В идеале, если у вас есть функция инициализации в вашей DLL, то при вызове init() следует показывать диалоговое окно с указанием срока действия и возвращать специальный код, чтобы разработчик также знал и существовал свою программу.

ХТХ, Элиас

person Elias Bachaalany    schedule 27.11.2009

Если я вас правильно понял, по истечении срока действия вы не хотите, чтобы люди вызывали функции в таблице экспорта вашей Dll.

Обратите внимание, что если ваша Dll загружается успешно, люди по-прежнему смогут вызывать ваш код Dll, даже если отображается экран ворчания. Таким образом, вам придется охранять все ваши экспортированные функции с помощью проверки времени.

Использование ворчащего экрана имеет несколько недостатков: а) Разработчики не любят, когда сторонние библиотеки выводят свои собственные ворчливые экраны. б) Что делать, если ваша библиотека используется в приложении без пользовательского интерфейса (например, используется в службе, которая не взаимодействует с рабочим столом)?

На мой взгляд, лучше всего было бы разрешить загрузку библиотеки (для случаев, когда ваша Dll находится в IAT других модулей), но чтобы все экспортированные функции в вашем интерфейсе возвращали код ошибки, если пробный период истек. Таким образом, приложение, использующее вашу библиотеку, может игнорировать функциональность вашей библиотеки DLL или отображать сообщение о том, что срок ее действия истек.

Надеюсь это поможет.

person Dan Cristoloveanu    schedule 28.11.2009