2013-03-26 135 views
3

现在我们正在开发一个基于Windows的小型应用程序。我们过去30天提供试用版许可证,30天到期后,产品将无法使用。解决日期时间许可证问题的最佳方法

现在,这里是我的问题:

想象一下,一个客户端谁下载并在1月1日和2月1日安装的应用程序,试用期将结束。现在在1月31日,如果他再次将系统时间更改为1月1日,系统将从头开始计数,因此客户可以通过简单地更改系统时间来延长试用期。

根据社区建议,我们可以检查互联网/日期时间,但作为一个小问题,我们不能通过服务器随机验证许可证,如果用户离线并更改他的系统日期时间,那么会再次出现问题。还有其他方法可以解决这个问题吗?

我已经检查过this question

解决此问题的最佳方法是什么?该产品是一个C#应用程序。

+1

您允许访问互联网吗?如果是这样,你可以去互联网时间服务器。 – 2013-03-26 07:37:10

+5

您是否可以不保存应用程序上次打开到文件的时间。然后,当应用程序下次打开时,您可以检测到时钟已被篡改。当然,您应该允许用户稍后更改时间,但如果多次执行,则可能会禁止使用该应用程序。 – foens 2013-03-26 07:38:24

+0

如果你有互联网,然后去互联网时间服务器,否则另一个选项使用注册表编辑器,创建文件夹和设置安装/失效/上次执行日期时间和应用程序运行检查您的日期 – 2013-03-26 07:53:07

回答

5

也许最好的解决方案是使用在线服务器验证许可详情。如果你让你的应用程序依赖于客户端机器的数据,那么他们总有可能会破坏它。但为此,您的客户端必须能够访问互联网

6

根据您的要求,我所看到的,无法检查在线服务器的日期。 这对离线系统非常明显。

所以,你需要做的几件事 -

  1. 设置高encypted数据的形式登记日期和expirydate和地方保存在注册表数据库。

  2. 当应用程序每次打开时,获取最新的时钟日期并将加密的数据保存在注册表中。

  3. 确保检查时钟日期和上次使用日期。如果上次使用日期< clockdate,则一切正常,但如果usagedate> clockdate,用户已更改时钟日期。所以,不要更新注册表。

  4. 一旦lastusagedate达到失效日期,弹出消息“您的试用已过期。”。

希望这会有所帮助。

欢呼声