限制C#和Windows中评估软件的启动或运行时间

限制C#和Windows中评估软件的启动或运行时间,c#,.net,windows,evaluation,license-key,C#,.net,Windows,Evaluation,License Key,有没有什么好方法可以限制应用程序的启动次数,或者限制它在Windows7下使用C#的时间 据我所知,注册表可以轻松编辑,有报告任何类型文件访问的程序,可以使用虚拟机将系统时间更改回应用程序安装时,等等。对于我所能想到的每个想法,都有一个(通常)琐碎的解决方法 我想避免使用internet连接。也就是说,我不希望软件每次使用哈希等请求启动权限 我看到第三方许可证系统具有这种功能。如果实现这些方法总是很蹩脚,那么他们是如何做到这一点的呢 注意:我不想“破解”第三方系统。我已经有我自己的许可证制度,我

有没有什么好方法可以限制应用程序的启动次数,或者限制它在Windows7下使用C#的时间

据我所知,注册表可以轻松编辑,有报告任何类型文件访问的程序,可以使用虚拟机将系统时间更改回应用程序安装时,等等。对于我所能想到的每个想法,都有一个(通常)琐碎的解决方法

我想避免使用internet连接。也就是说,我不希望软件每次使用哈希等请求启动权限

我看到第三方许可证系统具有这种功能。如果实现这些方法总是很蹩脚,那么他们是如何做到这一点的呢

注意:我不想“破解”第三方系统。我已经有我自己的许可证制度,我想改进。一般的,似是而非的想法都是我在寻找的


谢谢,Andy使用注册表,但要用过期日期对条目进行加密。这不是万无一失的,但它将保留75%的偶然作弊者

其他一些技巧:

  • 存储使用的天数(可能在另一个注册表项中或完全不同的地方),这样,如果他们回滚时钟,则使用的天数保持不变
  • 在加密中使用某种形式的salt,这样两个具有相同exp日期的程序将具有不同的值
  • 远离那些真正讨厌的东西,比如写硬盘的引导扇区(看着你),这样做会让你失去更多的用户,而不是你从DRM中获得的

  • 任何安全系统的关键是你不能相信他们控制的任何东西。任何没有互联网检查的系统都无法阻止他们重新加载虚拟机。

    构建一个相对安全但简单的软件许可系统绝非易事。不用说,只要有足够的资源和时间,任何系统(除了在安全服务器上托管代码)都可以被破坏。你能做的最好的事情就是付出比平均收益更大的努力

    如果你真的想保护你自己的软件资产,你应该考虑使用商业验证的授权技术,而不是自己翻滚。也就是说,让我们来看看你可以如何用你所描述的方式来保护。 首先,您应该认识到,在虚拟机时代,您创建的任何文件或注册表项都可以轻松回滚。如果没有验证过程的在线组件,您无法阻止这种情况

    您可以做的事情如下:

    • 存储系统已使用天数的加密值-该值永远不能后退
    • 存储一个加密计数器,每次使用系统时,该计数器将递减至零
    • 存储软件上次启动日期/时间的加密值
    • 存储其他三个值的加密哈希

    现在您有了一种方法来检查这些值是否一致,并限制某人篡改它们的能力。您还应该为这些值添加盐,以便它们不容易被重放。

    我注意到一些程序的安装程序在程序的其余部分都是独立的下载客户端。您是否可以使用元编程来发送可执行文件,对一些模糊的东西进行检查,例如(在此处插入模糊的东西)?

    这不是您问题的答案,只是需要考虑一下。无论你的保护系统多么复杂,它都很容易被破解。即使是在线检查,它也可以,而且如果有人非常想要它,它也会被破解

    也就是说,想要破解你的程序的人不是你的客户,他们从来都不是,将来也不会是。如果你让你的保护系统变得不可破解(而且没有牢不可破的保护系统),那么这些人就不会使用你的程序,他们会找到其他可以破解的程序

    另一方面,你的客户不会试图破解它,而是会购买原版。问问你自己——你真的想为那些不是你客户的人浪费你的时间、精力和金钱,并且可能为那些真正是你客户的人放慢系统的速度吗

    也就是说,我认为你应该建立某种保护系统,但要采用快速、易于实施且最不显眼的保护系统