在我的桌面程序中,我想检查一下,看看用户是否已将时钟设置回来。
为此,我将某些操作系统文件的时间戳与当前计算机日期进行比较。如果计算机认为是当前日期,那么他必须将时钟设置回来。
对于Windows XP,我一直使用以下文件:
c:\win386.swp
c:\windows\user.dat
and several others.
两个问题:
这是一个体面的方式吗,还是有更好的东西?
(假设对1的答案是“体面的”)与Windows Vista和Windows 7文件相比会有什么好处?
结论:Priyank说了一些显而易见的事情:我没有使用任何系统文件,最简单,最简单的方法就是使用程序本身的时间戳。毕竟,它的安装日期正是您希望试用开始的日期。
事实证明,您的答案以及我对其他相关StackOverflow问题和上述文章的研究使我决定采用更简单的方案。我的试用用户必须获得使用该试用版的密钥。我已将注册日期嵌入到密钥中。我真的不需要检查时钟设置。相反,我可以看到当前时间是否在注册日期和注册日期加上n天之间。
如果他们想要绕过那个计划,那就让他们吧。我同意那些人无论如何都不会付钱。让你的程序值得人们享受和想要使用,大多数人都会付钱。
答案 0 :(得分:3)
Windows文件将始终具有较早的日期,最好是使用系统日期检查程序的创建或修改日期。或者,当您的程序退出时,请确保记下时间戳并将其与下次启动程序时进行比较,并且始终存在NTP:http://en.wikipedia.org/wiki/Network_Time_Protocol
答案 1 :(得分:2)
更好的方法恕我直言,将在程序运行第一次时将当前时间戳存储在注册表中,然后在下次运行时将其与当前时间戳进行比较,如果一切正常,则更新时间戳。
答案 2 :(得分:2)
这不是一个直接的答案,只是提供一些意见和参考。我添加评论的时间太长了。
如果目的是为演示/试用创建一个有时间限制的软件,我们需要在实施它的程度和用户“黑客”传递它的趋势之间找到平衡。
我经常告诉别人,如果你的软件吸引黑客,它可能是有用的/好的。没有必要保护一个没人认为有用的软件。
无论如何,除了哲学话题之外,下面是关于这个主题的几个好读物:
关于乔尔论坛的How to Implement time-limited trial 关于SO的Time limited trial and Windows Certification 关于SO的Need Advice on Implementing a Time-limited Trial
答案 3 :(得分:0)
选项是从Web服务或时间服务器获取日期。这里的问题是,这只有在有互联网连接的情况下才有效,所以这只是一种更安全的补充方法。
答案 4 :(得分:0)
Windows提供用于通知系统时间更改的API。一例如是提供here的sysinfo.ocx activex控件。