我正在开发一个共享软件桌面应用程序。我到了需要实施试用/激活代码的地步。你如何处理这样的事情?我有自己的想法,但我想看看stackoverflow社区是怎么想的。
我正在使用 C++/Qt 进行开发。预期平台是 Windows/Mac/Linux。
谢谢你的建议!
我正在开发一个共享软件桌面应用程序。我到了需要实施试用/激活代码的地步。你如何处理这样的事情?我有自己的想法,但我想看看stackoverflow社区是怎么想的。
我正在使用 C++/Qt 进行开发。预期平台是 Windows/Mac/Linux。
谢谢你的建议!
什么可以预防和什么不可以预防:
请记住,人们总会想办法绕过您的试用期。因此,您想让该人不得不绕过您的试用期而烦恼,但如果无法绕过您的试用期也没关系。
如果有一个简单的机制,大多数人会认为尝试绕过试用期的工作量太大。例如,人们总是可以使用 filemon/regmon 来查看安装软件时哪些文件和注册表项发生了变化。
话虽如此,一个简单的机制是最好的,因为它浪费的时间更少。
这里有一些想法:
延长试验:
对我们来说,当客户请求延期试用时,我们会向他们发送一封自动电子邮件,其中包含程序“TrialExtend.exe”和试用延期代码。该程序使用试用扩展代码与我们的服务器联系以对其进行验证。如果代码通过验证,则其试用期将被重置。
无论您做什么,请密切关注系统日期。书中最古老的技巧是在未来的某个时间安装应用程序,然后在应用程序在首次运行时存储愚蠢的日期后返回实际日期。也许将密钥与在线存储库同步?
布赖恩的回答很好,但我想补充一点。
Linux 用户通常不习惯为软件付费,他们往往更精通技术,甚至可能在开源问题上“信奉宗教”。
出于这个原因,我真的建议保持简单 - 这实际上只是一个小障碍,让购买软件至少像窃取它一样容易。
我建议它在试用期后唠叨或禁用某些功能(例如保存),而不是完全死掉。只是一个观察,但基于功能的限制在 linux 世界中似乎更常见。
顺便说一句,使 linux 版本成为“一流”版本 - 体面的安装程序等会有所帮助。
如果您相对较小,或者您的程序相对小众,那么任何人都会费心破解它的可能性很小 - 所以一旦时间到了,只需专注于制作一个简单的好产品。
如果您 [相当] 可能有网络连接,您可以让安装程序在您的网站上注册,然后在每次启动时检查它。
如果这不可行,则将值写入文件系统上的全局可修改点(注册表项、/etc conf 文件中的项等)可能是可行的。
也许真正的问题是限时试用。我工作的公司做了大量的 Active Directory 工作,我们通常将我们的软件限制在少数用户的试用版中。我觉得以某种方式限制功能有时会更好,更容易实现,并且当用户只是更改计算机上的日期时不会失败。
有一种平衡行为,你不能太严格地限制功能,否则用户在试用中什么也得不到。同时,过于宽松的限制也不会激励购买。