2012-02-02 49 views
1

我正在试图制作一个基本上允许我在安装中推送DLL的系统,以及一些exe文件中的代码,这些代码允许我将所有未来的程序作为beta版本发布一段时间。确认系统时间

现在的问题是,如果我想这样做,我需要选择,直到程序有效。这很好,除了通过更改系统时钟,您可以轻松绕过系统。

现在,我想听听人们通常为这样的事情做些什么。 我一直在尝试一些方法,如联系一个网站给出时间戳,并比较,如果它不会总是增加超过9000 的程序开始时间并且事实上人们不会如果他们没有连接到互联网,就可以使用它。

任何建议,非常感谢。

回答

2

这不是100%保证解决方案,但它会带你那里

您将需要实现在配置文件中的这些事情(为什么配置文件,因为如果用户将其删除您的应用程序将无法运行)。还要加密所有以下数据。

  • 存储运行应用程序的日期和时间。
  • 存储应用程序运行的确切时间量。

这样就可以避免:

  • 如果用户更改计算机的时间,你会知道,因为你的应用程序是登录的日期和时间,它可能会重叠时间还早,说用户在月份的第6和第10天运行应用程序,然后他将日期恢复到第7天,您将会了解它。
  • 其次,用户可以将每次运行的日期更改为单一日期,在这种情况下,使用的总时间将对您有所帮助。假设用户每次运行日期设置为月份的第一个月,在这种情况下,他只能使用24小时的应用程序,但不能超过此值。

  • 从外部服务器检查其它选项(缺陷:要求互联网接入)
  • 贮藏时间注册表(缺陷:用户可以很容易地操纵注册表)

希望这可以帮助你。

+0

通过以加密方式存储注册表中的存储时间可以是“无缺陷的” – Max 2012-02-02 08:19:44

+1

但是,用户可以监视注册表,并可以删除条目。在这种情况下,程序会认为它是第一次运行。 – 2012-02-02 08:21:50

+0

你是绝对正确的......但知道如何监视注册表的计算机用户数量很小......这取决于使用该软件的人的类型......他们是普通人吗?工程师?他们是软件开发者吗? – Max 2012-02-02 08:31:12

0

如果您的软件可以访问某些本地服务器/ nas上的某个网络共享,则可以在此网络共享上创建一个新文件,并且该文件的创建时间将使用服务器/ nas的时钟设置,因此您可以将服务器/ nas上设置的时间与本地计算机的时间进行比较。

或者您还可以在上次执行的最后一次保存某处(注册表中的文件在数据库中),并且如果时钟返回,则可以锁定该应用程序并需要进一步的帮助: - )