如何限制C#应用程序的使用

时间:2012-06-19 19:39:58

标签: c#

我想限制任何exe文件的使用到特定的迭代次数,让我们说10.达到该限制后,用户将无法运行exe文件,或者第11次运行exe文件,他/她将收到一条消息“Exceeeded Trial Run”。

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

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

我不想更改注册表。

欢迎所有建议。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

防止用户超过一定数量试运行的最可靠方法是向他们发出注册码(GUID可以正常运行),然后在您自己的数据库服务器上跟踪剩余的试运行。猜测另一个用户的GUID是非常困难的,并且他们无法破解剩余的试验(没有黑客入侵你的服务器)。

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

除此之外,没有多少选项不容易被攻击。即使你加密了剩下的试验次数,所有用户都需要做的是将文件复制到其他地方,然后当他们达到限制时删除原始文件并将其替换为副本...无限重复。

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

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

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

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

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