13

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

任何帮助将非常感激。

4

10 回答 10

13

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

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

于 2008-11-10T10:52:22.387 回答
9

您可以使用多种技巧,但没有一个是 100% 失败的。

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

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

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

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

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

于 2008-11-10T10:57:41.970 回答
1

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

我没有使用足够多的 Winlicense 来发表意见,但是支持非常好。

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

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

于 2008-11-10T15:37:49.300 回答
1

对于有时间限制的应用程序,您需要防止的一件事是用户回滚他们的日历,以便应用程序仍然可以工作。解决此问题的一种方法是在应用程序启动时将时间戳存储在隐藏的注册表位置(或任何地方)。如果当前日期/时间早于您的应用程序记录的最后一个时间戳,则意味着用户已将日历回滚,您应该禁用该应用程序。

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

如果您的试用版在功能上被削弱了,您甚至可能在数月或数年后仍能从中获得销售。

于 2008-11-10T12:57:06.660 回答
1

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

一般来说,我发现时间限制比功能限制更有用。正如我在对Gamecat 帖子的评论中解释的那样

于 2008-11-10T13:15:34.110 回答
1

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

于 2008-11-10T13:40:25.650 回答
0

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

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

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

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

于 2008-11-10T13:24:34.247 回答
0

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

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

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

我创建了一个与程序一起分发的试用密钥。如果有人注册,我会为他们创建一个正式的 REG 密钥。

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

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

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

于 2011-01-19T17:06:14.293 回答
0

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

于 2011-01-19T15:41:23.203 回答
0

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

为了让您开始,您可以使用Delphi 许可证管理库来帮助您加密许可证信息并生成一个基于字符串的密钥,您可以在注册时将其发送给您的客户。那里的图书馆很少。

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

并且不要过度这样做!没有牢不可破的软件保护。如果微软做不到,你就不会做。专注于为您的应用程序添加漂亮的功能,而不是创建防弹保护系统(这是不可能的)。

于 2018-03-20T11:39:58.717 回答