我希望在共享软件的基础上实现我的软件,以便用户有最长(比如)30 天的试用期来试用该软件。在购买时,我打算为用户提供一个随机生成的密钥,当输入该密钥时,它会再次启用该软件。
我以前从未走过这条路,因此任何建议或反馈或指向如何完成此操作的“标准”方式的指针将不胜感激。
我预计用户不会通过更改系统日期或类似的方式作弊,尽管这可能值得考虑。抱歉,如果此主题以前出现过。
我希望在共享软件的基础上实现我的软件,以便用户有最长(比如)30 天的试用期来试用该软件。在购买时,我打算为用户提供一个随机生成的密钥,当输入该密钥时,它会再次启用该软件。
我以前从未走过这条路,因此任何建议或反馈或指向如何完成此操作的“标准”方式的指针将不胜感激。
我预计用户不会通过更改系统日期或类似的方式作弊,尽管这可能值得考虑。抱歉,如果此主题以前出现过。
对于随机生成的密钥,如果密钥实际上是随机的,您将如何验证密钥是否合法或密钥是否伪造?看看文章“实现部分序列号验证系统”,因为它非常好并且很容易用任何语言实现。
关于时间试验,基本的解决方案是将您的主要可执行文件创建时间与当前系统时间进行比较并根据差异采取行动。这假设您的安装程序将文件创建时间设置为安装时间,而不是保留您编译它的时间!:)
如果您的软件真的很有用,那么在您看到第一个订单之前,您肯定会在 P2P 上找到破解副本。无论您要实施的许可证执行代码多么复杂,都会发生这种情况。
也就是说,只需将首次运行日期存储在某处(可能是注册表,如果在 Windows 上)并在 30 天后拒绝启动,或者只是打开一个提醒窗口。
不要担心作弊者,无论如何他们都会找到绕过你的限制的方法。担心你诚实的客户,尽量不要让他们的生活变得更艰难。
Eric Sink在这里(第 4 节)写了更多关于此的内容。
还要注意时间的急剧变化,如果当前日期神奇地小于安装日期等。
绕过这种类型的日期锁的一种方法是在安装之前将日期更改为未来几年。所以你应该检查今天的日期不小于安装日期。
在第一次开始时,您可以将实际日期存储在某处。
每次启动后,您都会查找存储的日期,如果存在,则读取它,如果在第一次启动后超过 30 天,则停止程序。