如何在我的Delphi应用程序中进行14天的试用限制

时间:2008-11-10 10:47:42

标签: delphi licensing

我希望为我的软件添加14天的试用限制。该程序是用Delphi 7编写的。

非常感谢任何帮助。

11 个答案:

答案 0 :(得分:13)

您可以尝试使用Turbopower OnGuard。这是现在的开源。

http://sourceforge.net/projects/tponguard/

答案 1 :(得分:8)

你可以使用几个技巧,但没有一个100%失败保存。

  • 您可以使用某种许可机制。
  • 您可以将设置时间存储在注册表中隐藏的地方。
  • 您可以将设置时间存储在文件中(可能是可执行文件或dll)。
  • 您可以将IP地址存储在中央数据库中,并且每次检查是否通过了14天(您需要互联网连接)。
  • 您可以在服务器上动态创建文件(例如dll),并让安装程序检索该文件。 (请务必记录IP,以便无法再次尝试。)

但我认为最好的方法是提供功能有限的试用版。例如:不打印,不保存项目,或只保存小项目。

这样可以避免麻烦,可能的客户可以花时间来评估您的项目。

编辑:如果您构建了一种机制来检查时间。一定要建立一个保证金,否则如果你回到其他时区,程序将被锁定。或者把时钟放回冬天。我认为25小时的保证金将涵盖所有内容。 (并且在保存方面,您可以构建一个限制,用户可以每天回滚时间。)。

但是,保持付费客户的最佳方式是提供良好的支持。如果服务不好,我会停止使用产品。

答案 2 :(得分:2)

您可能需要阅读this page。 它有点陈旧,但关于如何以及为什么保护您的程序的智能信息。

答案 3 :(得分:1)

使用有时间限制的应用程序需要防范的一件事是用户滚动日历以便应用程序仍然有效。解决此问题的一种方法是在应用程序启动时将时间戳存储在隐藏的注册表位置(或任何位置)。如果当前日期/时间早于应用程序记录的上一个时间戳,则表示用户已将日历回滚,您应该禁用该应用程序。

但是,对于程序员和用户来说,时间限制是一个真正的痛苦。这也不是一个很好的营销理念:为什么要分发具有失效日期的宣传材料(这是您的试用版)?这就像是一家公司在纸上邮寄广告,这些广告旨在两周后解体。

如果您的试用版在功能上遭到严重损害,那么即使数月或数年之后,您仍可能会获得销售额。

答案 4 :(得分:1)

您可以找到类似的问题here

总的来说,我发现时间限制比功能限制更有用。正如我在Gamecat post

的评论中所解释的那样

答案 5 :(得分:1)

执行任何这些检查时需要注意的事项。日期永远不会超过您在任何一个方向输入之日起的14天。围绕大多数这些类型限制的常用方法是提前几年设置日期,安装并运行软件,然后将日期设置回当前时间。如果您的硬编码在原始开始日期后的14天内死亡,则用户需要几年的时间来试用您的软件。检查另一个方向也会给用户最多28天。

答案 6 :(得分:1)

我使用过Armadillo,Asprotect和Winlicense。 Armadillo和Asprotect都存在严重问题,例如某些AV被视为病毒/特洛伊木马,不兼容问题等。

我没有充分使用Winlicense有很多意见,但支持非常好。

显然,两者都是比你要求的更完整的解决方案 - 它们包括保护,许可,密钥等。

正如其他人所说,有时限制功能或添加水印是最佳选择。我为我的某个程序(STGThumb)添加了水印,销售额增加了约400%...

答案 7 :(得分:0)

我建议使用时间戳制作一个试用序列号,并强制用户在安装时将其输入软件。您甚至可以在设置完成后通过调用服务器端页面来自动化它。

试用序列密钥中的时间戳允许您在需要时延长其试用期。

此外,您可以倒计时以避免用户在安装时更改年份:

e.g。如果您在2008年11月15日(服务器时间)生成14天试用版,则可以在使用或输入序列时检查定位日期是否必须大于1.11.2008或小于24.11.2008。

答案 8 :(得分:0)

您可以使用专业工具作为SoftwareShield。 我在我们的应用程序中使用它,它提供了几个许可证的模型,包括时间限制演示。

答案 9 :(得分:0)

我创建了自己的密钥生成器(用于创建密钥的单独程序)。键值存储在一个二进制文件中,其名称与我的程序相同,只是一个不同的ext。示例:myprogram.key

我存储:
名称
电子邮件
RegType(REG,TRIAL)
RegDate
FirstRun(0 OR 1)

程序查找该文件。如果它不存在,它会向用户抛出一条消息并关闭。密钥文件生成器将值写入加密字符串,然后使用内置流例程写入。

我创建了一个随程序分发的TRIAL键。如果有人注册,我会创建一个官方REG密钥。

Anway,如果他们正在运行我的程序,它首先会查找密钥文件。如果找到,则检查reg类型,如果是regitered版本,则程序加载,并显示注册信息。我还存储了一个regdate,我将其与程序运行的那天进行比较 - 如果regdate大于或等于今天的日期,则用户会重新注册。

如果发现密钥文件存储了TRIAL的RegType,那么它们首次运行它的日期将存储在密钥文件中,并且首次运行的标志将设置为1.然后它们可以使用它14天。每次运行程序时,都会将存储的日期与运行日期进行比较。

非常简单的编写过程。这是万无一失的吗?不,什么都没有!我的应用程序取得了很大的成功。它并不广为人知,所以没有黑客可以通过它来破解它。

答案 10 :(得分:0)

最好的方法是从您的服务器获取注册信息。 最大的缺点:1。服务器必须始终在线! 2.用户必须连接到互联网(当它使用您的应用程序时)。

为了帮助您入门,您可以使用Delphi license management library来帮助您加密许可信息并生成基于字符串的密钥,您可以在注册时将密钥发送给您的客户。那里的图书馆很少。

无论如何,您发送到服务器的任何内容都需要基于该计算机的hardware fingerprint。否则,您的许可证密钥将在某个warez网站上泄露出来,并且每个人都可以使用该密钥。但是,如果密钥是基于硬件的,那么如果它在Internet上泄露就没用了。

不要过来这样做!没有牢不可破的软件保护。如果微软无法做到这一点,你就不会这样做。专注于为您的应用添加不错的功能,而不是创建防弹保护系统(这是不可能的)。