Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 德尔福:30天试用期_Delphi - Fatal编程技术网

Delphi 德尔福:30天试用期

Delphi 德尔福:30天试用期,delphi,Delphi,我怎样才能对我的申请进行30天的试用?我需要允许用户只使用30天的应用程序。这些天怎么算 我把第一个和最后一个日期记录在登记册里。但是,如果要更改系统时间,则不会提供任何保护。我需要计算这30天。对于这种“保护”和其他一些保护,我在过去使用了TmxProtector(开源),并取得了良好的效果。从提供的链接: TmxProtector是一个软件保护组件。它是设计的 用于快速实现应用程序保护功能。你可以 创建时间试用和密码保护的应用程序。您可以设置 最大执行次数,并且可以使用注册密钥 嗯 此组件使

我怎样才能对我的申请进行30天的试用?我需要允许用户只使用30天的应用程序。这些天怎么算

我把第一个和最后一个日期记录在登记册里。但是,如果要更改系统时间,则不会提供任何保护。我需要计算这30天。

对于这种“保护”和其他一些保护,我在过去使用了TmxProtector(开源),并取得了良好的效果。从提供的链接:

TmxProtector是一个软件保护组件。它是设计的 用于快速实现应用程序保护功能。你可以 创建时间试用和密码保护的应用程序。您可以设置 最大执行次数,并且可以使用注册密钥 嗯


此组件使用非常简单的加密将过期日期存储在注册表中,并提供一些简单的系统日期篡改检测。

加密日期并将其存储在注册表中最好的方法是由安装程序自己存储该日期,如果该日期不存在,应用程序应退出。

有一个开源项目(以前是商业产品):

是一个库,用于创建Borland Delphi&C++Builder应用程序的演示版本。创建有时间限制、功能限制、限制一定数量的使用或限制一定数量的并发网络用户的演示版本


我还没有检查支持哪些Delphi版本。

您可能会提出一个需要internet连接的系统,但是如果没有用户不能篡改的东西,我看不到解决方案

任何依赖不受信任元素(受用户控制的保护元素)的解决方案都非常脆弱

我能想到的防止用户倒转时钟的最简单方法是限制发射的总次数

但是,限制启动次数的尝试需要持久性--将数据保存到磁盘,可能加密并存储激活数据文件的修改版本-

想象一下,一旦应用程序启动,在一个独特的场合,即使重复使用同一日期,你也会将其中一天计算为“用完”。为了避免启动时使用超过1个“激活时间日”,用户必须允许您的软件在每次运行时重新保存其激活文件


要阻止这种方法,用户只需保持明显的日期不变,而且他们必须阻止您将任何内容存储到磁盘;或者,他们可以简单地跟踪和记录您的更改,并使用监视过程或VMWare快照将其撤销。关于VMWare快照,您无能为力。虚拟机的磁盘不在您的控制之下。

您可以通过在注册表中存储上次执行的日期来保护您的应用程序,让用户将时钟设置回原位

每次启动应用程序时,您都需要执行以下操作:

    检查当前日期(如系统时钟所报告的)对存储的最后执行日期,如果当前日期早于上次执行日期,则考虑试用期已过期(或您喜欢什么)。
  • 如果上一次检查正常,请在注册表中保存当前日期并继续执行
正如WarrenP所说,任何在本地存储信息的技术都可以使用VMware快照轻松绕过


任何人,包括那些通过互联网进行检查的人,都可以通过汇编程序级别的黑客攻击跳过。

听起来你需要存储上次写入注册表项的日期。然后在您的程序中,测试当前日期是否小于最后一个注册表项的日期。如果true则显示一条消息,说明试用期已过,必须购买该程序。

以下是与Delphi讨论共享软件试用强制: 同时讨论各种第三方解决方案、DIY技术等

在我看来,DIY是可行的,如果你的应用程序生成了用户希望保留的数据,那么你可以简单地将使用率/日计数器的副本嵌入数据库,这样他们就无法在不破坏数据的情况下擦除数据。我也喜欢水印(在报告上打印“试用版”,等等),提高nag的严重性,但我不建议或纵容在过期数据之前的“死亡”致残。我还喜欢测量“实际使用天数”,而不是使用日历

注册表操作是有效的,许多第三方保护者都使用它。但您需要隐蔽,同时在多个位置保留备份

你也应该考虑分开试用和注册版本。但也要考虑盗版者会用被盗卡购买注册版本,并将其放在RAPIDHORD、BitTorrent等。p>
还要注意的是,精心设计的防御系统会导致令人头痛的支持问题。有时电脑崩溃,时钟倒转。他们安装了新的硬件。PC被重建、从备份中恢复等。。如果用户正在运行调试器,他可能是软件开发人员,而不是海盗。如果你的应用看起来像是打了补丁,那么它可能是一个过于激进的防病毒软件。而且在任何时候,一个劣质的Windows补丁可能会让你的程序认为它正在受到攻击、黑客攻击或逆向工程。您已收到警告…

正如前面提到的线程所指出的,我鼓励您研究WinLicense:

我已经使用它很长时间了,它可以很好地处理试用期。它还处理许可、客户列表等


Tom

以下是一些关于如何在试验期间处理时钟变化的想法:

  • 保存第一次和最后一次程序启动的日期。如果上次程序启动的日期大于当前日期,则用户已将时钟向后移动。我只是简单地增加一天的时间并节省开支