2

在我的桌面程序中,我想检查一下用户是否已将时钟调回。

为此,我将某些操作系统文件的时间戳与当前计算机日期进行比较。如果有任何晚于计算机认为的当前日期,那么他一定是把时钟调回来了。

对于 Windows XP,我一直在使用以下文件:

c:\win386.swp
c:\windows\user.dat
and several others.

两个问题:

  1. 这是一种体面的方法,还是有更好的方法?

  2. (假设 1 的答案是“体面的”)什么是比较好的 Windows Vista 和 Windows 7 文件?


结论: Priyank 说了一些明显让我难以理解的事情:与其使用任何系统文件,最简单的方法可能是只使用程序本身的时间戳。毕竟,它的安装日期正是您希望试用开始的日期。

事实证明,您的回答以及我对其他相关 StackOverflow 问题和提到的文章的研究使我决定采用一个更简单的方案。我的试用版用户已经获得了使用试用版的密钥。我已将注册日期嵌入到密钥中。我真的不必检查是否将时钟调回。相反,我可以查看当前时间是否在注册日期和注册日期加上 n 天之间。

如果他们想麻烦绕过那个计划,那就让他们吧。我同意那些人无论如何都不会付钱。使您的程序成为人们喜欢和想要使用并且大多数人愿意付费的东西。

4

5 回答 5

3

Windows 文件总是有较早的日期,最好用系统日期检查程序的创建或修改日期。或者任何时候您的程序退出时,请务必记下时间戳并将其与下次启动程序时进行比较,并且总是有 NTP:http ://en.wikipedia.org/wiki/Network_Time_Protocol

于 2009-11-17T08:29:52.560 回答
2

恕我直言,更好的方法是在第一次运行程序时将当前时间戳存储在注册表中,然后将其与下次运行时的当前时间戳进行比较,如果一切正常,则更新时间戳。

于 2009-11-17T08:28:54.623 回答
2

这不是一个直接的答案,只是提供一些意见和参考。太长了,我无法添加为评论。

如果目的是创建一个用于演示/试用的限时软件,我们需要在您实施它的程度与用户“破解”通过它的趋势之间找到一个平衡点。

我经常告诉人们,如果你的软件吸引了黑客,它可能是有用/好的东西。保护没有人认为有用的软件毫无意义。

无论如何,撇开哲学话题不谈,下面是一些关于这个话题的好读物:

如何在 Joel 的论坛上实施限时试用SO上的
限时试用和 Windows 认证需要关于对 SO
实施限时试用的建议

于 2009-11-17T10:35:47.163 回答
0

一种选择是从 Web 服务或时间服务器获取日期。这里的问题是,这只有在有可用的互联网连接时才有效,所以这只是一种更安全的补充方法。

于 2009-11-17T08:28:53.833 回答
0

Windows 提供用于通知系统时间更改的 API。其中之一是此处提供的 sysinfo.ocx activex 控件。

于 2009-11-17T08:39:42.203 回答