1

我想将任何 exe 文件的使用限制为特定的迭代次数,比如说 10。达到该限制后,用户将无法运行 exe 文件,或者在第 11 次运行 exe 文件时,他/她将收到一条消息“超出试运行”。

这在 C 语言中很有可能,就像这样 - http://www.gidforums.com/t-22362.html

访问 PE 标头的示例在这里 - http://code.cheesydesign.com/?p=572,但它检查时间戳,而我想要应用程序已启动的出现次数。

我不想更改注册表。

欢迎所有建议。

4

2 回答 2

1

防止用户超过一定数量的试运行的最可靠方法是向他们发出注册码(GUID 可以很好地工作),然后在您自己的数据库服务器上跟踪剩余的试运行。猜测另一个用户的 GUID 是非常困难的,而且他们不可能破解剩余的试验(除了入侵您的服务器)。

当应用程序运行时,它可以简单地访问一个返回软件状态的小型 Web 服务。如果无法访问 Web 服务,则应用程序会要求用户连接到 Internet 并重试。

除此之外,没有多少选择是不容易被黑客入侵的。即使您加密了剩余的试验次数,用户所需要做的就是将文件复制到其他地方,然后当他们达到限制时删除原始文件并用副本替换它......无限重复。

这个模型的好处是,当用户购买完整版时,您需要做的就是更新您的数据库并授予他们完全访问权限。

如果您想让完全付费的用户继续使用该软件而不需要连接到互联网,那么在支付软件后第一次连接到 Web 服务器时,可以在某处存储一个确认用户付费订阅的密钥文件。您甚至可以根据用户的注册号创建一个哈希,以确保一个用户不能使用另一个用户的密钥文件。

如果订阅是年度订阅,则付费用户的应用程序可以在互联网连接可用时重新查询服务器并重新检查以确保他们的注册仍然有效。或者您的密钥文件可能包含一些加密日期,在该日期将不再有效。

编辑:基于日期的试运行会更容易实施。您可以提供带有加密日期的密钥文件。由于日期不会改变,用户将很难破解密钥文件。即使他们借用或偷了别人的,他们也只会在此之前获得一到两周的额外时间(取决于您的试用期),也会失效。不同之处在于基于日期的密钥文件是静态的,因此很难进行欺骗。

现在,另一种选择是将这两种方法结合起来。您可以在同一个密钥文件中使用加密日期进行倒计时。这将确保,即使用户尝试复制/替换密钥文件,试用仍将最终结束(可能 10 次使用/1 个月,以先到者为准)。

于 2012-06-19T19:56:27.900 回答
1

除了关于是否应该这样做的现有评论之外,除了不修改注册表之外,唯一的其他选择是以加密方式将某些内容保存到文件中。安装应用程序或 exe 将创建文件,并且应用程序的每次启动都会解密、更新、加密文件。但即便如此,这也是用户在您不想要的情况下更改事物的主题。通过默默无闻的安全总是一种痛苦。

于 2012-06-19T19:46:32.290 回答