在应用程序中实现过期日期?

时间:2009-12-09 02:11:20

标签: c++ time

我想在我制作的某些软件中设置过期日期。显然

伪码:

if time() > xxx: exit()

此处所有人必须将系统时钟设置回来。还有什么比较好的吗?

7 个答案:

答案 0 :(得分:10)

更方便用户的是跟踪用户使用软件的天数。例如,每次程序启动时,您都可以将日期写入加密文件(除非文件中已存在该日期)。然后,一旦文件中有超过30个日期,就让用户知道是时候购买完整版本了。

答案 1 :(得分:3)

如果他们付出足够的努力,总有人能够打败你的系统。乔尔·斯波尔斯基(Joel Spolsky)说了一些非常准确的话(字样是我的):

  

您的软件保护计划不一定是防弹(也不是),它只需要足够好以保持诚实的人诚实

所以,考虑到这一点,我们可以想出一些聪明的东西,以保持诚实的人诚实,因为肮脏的骗子无论如何都不会为你的应用付费。我从来不需要这样做,也没有研究任何已知的方法,但我可以想到一些想法:

  1. 使用双向哈希来存储初始日期并将其与当前日期进行比较。您可以将已保存到磁盘。

  2. 在Windows上,使用注册表。是的,这不是靠近防弹的地方,但是大多数人不会通过注册表来寻找你的钥匙(大多数人不会知道如何)。

  3. 使用安装文件的创建日期作为参考。

答案 2 :(得分:1)

取消您安装的某个文件的创建日期。

这为您提供了一个不变的日期,可以从现在开始减去以获得安装程序的时间。唯一的问题是它们重新安装时。解决此问题的最简单方法是使用注册表设置。

答案 3 :(得分:1)

这里没有真正的解决方案 - 任何事情都可以破解。你可以考虑:

  • 通过在线查看时间 服务
  • 存储上次运行日期和 检查以确保它不是 在当前日期之后
  • 检查 某个系统上的“最后修改”日期 文件。

答案 4 :(得分:1)

你的目标是什么?如果要阻止所有盗窃,祝你好运;所有保护计划最终都将被打破。如果要让诚实的人保持诚实,不要担心他们会把时间安排回来 - 没有人会这么做就麻烦了,那些诚实的人会立即付钱。

答案 5 :(得分:0)

解决方案不需要完美,只需要让用户烦恼,这样他就不会尝试游戏系统。

您可以计算aboslute值的差异,并确保它小于X天。这样,他们需要始终将时钟保持在X天内。没有人会永远这样做。

答案 6 :(得分:0)

您可以尝试在注册表中记录时间戳。将它们放在那里时,您可以加密时间戳。问题是它值得吗?

弄乱你的计算机时钟,特别是回滚它会产生各种令人头疼的问题。人们通常不会这样做,至少在所有时间 - 来自Microsoft,Adobe等软件的有限试用版本都不会尝试建立防止时间倒退的保护