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

如何限制C#应用程序的使用,c#,C#,我想将任何exe文件的使用限制为特定的迭代次数,比如说10次。达到该限制后,用户将无法运行exe文件,或者在第11次运行exe文件时,他/她将收到消息“超出试运行” 这在C中是很可能的,就像这样- 访问PE头的一个例子是-,但它检查TimesStamp,而我需要应用程序启动的次数 我不想更改注册表 欢迎提出所有建议。除非已有关于是否应该这样做的评论,否则除了不修改注册表之外,唯一的其他选择是以加密方式将某些内容保存到文件中。安装应用程序或exe会创建文件,每次启动应用程序都会对文件进行解密、更新

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

这在C中是很可能的,就像这样-

访问PE头的一个例子是-,但它检查TimesStamp,而我需要应用程序启动的次数

我不想更改注册表


欢迎提出所有建议。

除非已有关于是否应该这样做的评论,否则除了不修改注册表之外,唯一的其他选择是以加密方式将某些内容保存到文件中。安装应用程序或exe会创建文件,每次启动应用程序都会对文件进行解密、更新和加密。但即便如此,这也取决于用户在不需要的情况下更改内容。通过模糊实现安全性总是一件痛苦的事。

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

当应用程序运行时,它只需点击一个小的web服务即可返回软件的状态。如果无法访问web服务,则应用程序将要求用户连接到internet并重试

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

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

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

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

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


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

此处的切题注释。通过使用次数(即应用程序打开)进行限制是非常烦人的。为什么没有时间限制?