我正在开发一个类似共享软件的sdk库(使用C ++)。该库是一个简单的dll提供的一些功能。那么,我的第一个问题是简单的dll可以进行哪些类型的试验? 我不想削减试用版的功能,所以我倾向于使用计时器。
我粗略了解如何跟踪lib的使用时间,所以第二个问题是如何指示试用期的到期时间?
现在有两个想法:
评估期结束后,库将无法加载。
或
但是他们看起来都很粗糙,你能不能对此提出一些建议?
谢谢!
答案 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的功能或显示它已过期的消息。
希望这有帮助。