English 中文(简体)
如何在我的Delphi应用程序中设置14天试用期限
原标题:
  • 时间:2008-11-10 10:47:42
  •  标签:

我正在寻找为我的软件添加14天试用期的方法。该程序使用Delphi 7编写。

任何帮助都将不胜感激。

问题回答

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

将此翻译成中文:http://sourceforge.net/projects/tponguard/ http://sourceforge.net/projects/tponguard/

有几个技巧可供使用,但没有一种是100%失败安全的。

  • You can use some kind of licensing mechanism.
  • You can store the setup time somewhere hidden in the registry.
  • You can store the setup time in a file (possibly an executable file or dll).
  • You can store the IP address in a central database and check each time if the 14 days are passed (you need a internet connection for that).
  • You can create a file (for example a dll) dynamically on your server and have the installer retreive that file. (Be sure to log the IP so a second attempt will not be possible).

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

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

编辑:如果你构建了一个检查防止时钟倒退的机制。请一定要加入一个余量,否则当你前往另一个时区时,程序会被锁住。或把时钟调回冬令时。我认为一个25小时的余量可以覆盖一切。(为了保险起见,你还可以建立一个限制,否则用户每天都可以往回调时间。)

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

一个时间有限的应用程序需要注意的一件事是,用户可能会回滚他们的日历,以便应用程序仍能正常工作。 解决这个问题的一种方法是在应用程序启动时将时间戳存储在隐藏的注册表位置(或任何其他地方)。 如果当前日期/时间早于您的应用程序记录的上一个时间戳,那么这意味着用户已经回滚了日历,您应该禁用应用程序。

时间限制对程序员和用户来说都是真正的痛点。这也不是一个好的营销策略:为什么要费力分发有使用期限的促销材料(这就是您的试用版),这就好像一家公司会寄出设计成两周后会分解的广告纸。

如果你的试用版本功能残缺不全,即使几个月或几年后,你仍然可能仍然有销售。

你可以在这里找到类似的问题。

一般来说,我觉得时间限制比功能限制更有用。就像我在Gamecat的帖子的评论中所解释的那样。

在执行任何这些检查时需要注意的问题是,日期在任何方向上都不能超过您输入的日期超过14天。解决大多数这些类型限制的常见方法是将日期设置在未来几年,安装并运行您的软件,然后将日期设置回当前时间。如果您已被硬编码死于原始启动日期的14天后,则用户需要几年时间来尝试您的软件。在检查其他方向时,用户最多也只有28天。

我曾使用过Armadillo、Asprotect和Winlicense。Armadillo和Asprotect都有严重的问题,比如被一些防病毒软件认为是病毒/特洛伊木马、不兼容等问题。

我使用Winlicense的时间不够长,对它没有太多的意见,但支持相当不错。

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

正如其他人所提到的,有时限制功能或添加水印是最好的选择。我曾给我一个程序 (STGThumb) 添加水印后,销售量增长了约400%...

我建议制作一个带有时间戳的试用序列号,并在安装软件时强制用户输入。您甚至可以在安装完成后调用服务器端页面自动化。

试用序列号中的时间戳可允许您在需要时延长试用期。

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

例如,如果您在2008年11月15日(服务器时间)生成了14天的试用期,那么当使用或输入序列号时,您可以检查位置日期必须大于2008年11月1日或小于2008年11月24日。

You can use a professional tool as SoftwareShield. I use it in our apps and it provides several licence s models, including timelimited demo.

我创建了自己的密钥生成器(用于创建密钥的单独程序)。密钥值存储在一个具有与我的程序相同名称但不同扩展名的二进制文件中。例如:myprogram.key。

I store:
Name
Email
RegType (REG, TRIAL)
RegDate
FirstRun (0 OR 1)

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

我创建了一个试用密钥,然后将其与程序分发。如果某人注册成功,我会为他们创建一个正式的注册密钥。

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

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

写作非常简单的过程。 它百分百可靠吗? 不,没有任何东西是! 我的应用程序非常成功。 它并不广为人知,因此没有黑客来窥探它。

The best would be to get the registration info from your server. The big drawback: 1. The server must be ALWAYS online! 2. The user must be connected to internet (when it uses your app).

为了让您开始,您可以使用 Delphi 许可证管理库 来帮助您加密许可证信息并生成基于字符串的密钥,以便在注册时发送给您的客户。有相当多的库可供选择。

无论如何,您发送到服务器的任何内容都需要基于该计算机的硬件指纹。否则,您的许可证密钥将泄漏到某些盗版网站上,并且每个人都可以使用该密钥。但是,如果密钥是基于硬件的,则如果在互联网上泄漏,它将是无用的。

不要过度做出来!没有坚不可摧的软件保护。如果微软都做不到,你也做不到。专注于为您的应用添加不错的功能,而不是创建防弹保护系统(这是不可能的)。





相关问题
热门标签