如何为动态链接库设置试用版?

时间:2009-11-27 09:42:39

标签: c++ trialware shareware

我正在开发一个类似共享软件的sdk库(使用C ++)。该库是一个简单的dll提供的一些功能。那么,我的第一个问题是简单的dll可以进行哪些类型的试验? 我不想削减试用版的功能,所以我倾向于使用计时器。

我粗略了解如何跟踪lib的使用时间,所以第二个问题是如何指示试用期的到期时间?

现在有两个想法:

  1. 评估期结束后,库将无法加载。

  2. 评估期结束后,库将成功加载,但会显示某种唠叨屏幕。
  3. 但是他们看起来都很粗糙,你能不能对此提出一些建议?

    谢谢!

3 个答案:

答案 0 :(得分:1)

当您调用DLL函数之一时,可能会出现“过期的试用许可证”错误。用户更明确,更容易理解。

my2cents

答案 1 :(得分:1)

在(1)中,您必须在到期时在DllMain()中失败。如果你的DLL存在于使用你的DLL的程序的导入表中,那就没那么好了。

在(2)中你有更多的选择,它更友好恕我直言。

只需在到期时设置内部标记,然后显示一个nag对话框。

如果用户继续调用导出的函数,则检查该标志并对DLL的所有函数调用失败。

理想情况下,如果你的DLL中有一个init函数,那么在调用init()时会显示expiration nag对话框并返回一个特殊代码,以便实现者知道并存在他的程序。

HTH, 利亚

答案 2 :(得分:1)

如果我在到期后正确理解你,你不希望人们调用你的Dll导出表中的函数。

请注意,如果您的Dll加载成功,即使显示唠叨屏幕,人们仍然可以调用您的Dll代码。因此,您必须通过时间检查来保护所有导出的功能。

寻找唠叨屏幕有几个缺点: a)开发人员不喜欢第三方库弹出他们自己的唠叨屏幕。 b)如果在非UI应用程序中使用lib(例如,在没有与桌面交互的服务中使用),该怎么办?

在我看来,最好是允许加载库(对于你的Dll在其他模块的IAT中的情况),但如果试用期满,你的界面中的所有导出函数都会返回错误代码。这样,使用您的库的应用程序可以选择忽略您的Dll的功能或显示它已过期的消息。

希望这有帮助。