我已经创建了我的产品,也生成该许可证密钥,但我要问的是钥匙后30天。 我有一个注册表值存储的日期在加入30日内提出。 但我发现,如果用户之前更改系统日期30天我的逻辑行不通。
那么,有没有检查系统日期,只允许试用30天为试用版软件的解决方案吗?
我已经创建了我的产品,也生成该许可证密钥,但我要问的是钥匙后30天。 我有一个注册表值存储的日期在加入30日内提出。 但我发现,如果用户之前更改系统日期30天我的逻辑行不通。
那么,有没有检查系统日期,只允许试用30天为试用版软件的解决方案吗?
你可以有你的每一天的使用后增加的另一个注册表项。 这样一来,即使他们更改计算机的日期,这将关键指示,它已经运行了> 30天内的程序。
此外,该值可以加密,这样,如果用户试图手工更改,程序可以拒绝运行,因为它是无法解密的价值,并得到一个有效的数字出来。
要解决重新安装,你可以添加一些信息,以保存您的应用程序的试用版,这是唯一的应用程序(可能是从安装时的时间戳)的特定版本的任何文件。 当你的应用的试用版本试图打开一个文件时,它会检查这个签名,并确保其与同一实例创建,否则拒绝打开该文件。 这基本上neuters简单地重新安装应用程序,并继续使用它的能力。
在这一天虽然结束,用户有完全控制他们的机器和也许可以找到一个办法解决一切让用户使用的应用程序是你想要做的(短期访问,其中这些细节都在你面前保持一个Web服务)。 你可能不应该花费那么多的精力试图阻止谁愿意去通过这个趁手的家伙,而是花费额外的时间/金钱/能源改善为那些谁愿意支付的应用。
我对你有一个简单的解决方案。
以2个变量注册表:1.日期2.计数器
脚步:
设置一个计数器= 1
复制系统日期日期
检查每个时间,如果日期比当前日期不同,该日期复制到注册表的日期,也通过增加1计数器如果日期是相同的,没有做任何事情。
现在,你可以反查你的审判日到期
通过使用这些技巧,如果用户改变系统日期以前的日期也比它的工作原理。
对于注册表可以加密日期和计数器,以便在技术人员不承认你的逻辑!
干杯...
添加
只有当用户不更改每一天的日期这个逻辑失败! 同样,我们必须为解决方案!
我不知道是否有可能或没有,但你总是可以有一些解决方案:
你可以使用一个授权组件。 你可以自己做一个(参见LicenseManager有类 ),或购买一个从供应商(例如CryptoLicensing )。
你需要有,如果用户改变从当你第一次开始试用之日起检测的方式。 在我以前用过的解决方案,我们有救了“最后执行的”日期“第一执行”日期,如果时钟改变任何东西的“最后执行”二级以上天数在终止审理。 你还需要一个“天执行的”计数器,使他们能够保持不动之日起二日内回(忘了提,部分) - 计数器从每执行递增。
当然,这样的软件许可系统始终通过卸载并与注册管理机构适当清爽重新安装可以避免 - 诀窍是混淆和足够复制许可信息,使这个困难,但最终,它会被发现(特别是如果你使用是非模糊.NET代码库)。
很难流程30天没有参考系统日期/时间。 你可以始终保持在其启动的应用程序的日期的列表,并为每一个它是从与上次不同的时间计数1。 这样,你的用户将不得不在每次发射了您的应用程序时设置相同的日期。
除此之外,你可以提供有互联网接入,查询已知的良好时间服务器的当前日期。 这可以通过断开来规避,但你总是可以要求互联网连接之前,您的应用程序将启动。
最后,通过硬件加密狗或类似的外部,本地时间源,但我认为你做了极致,你会更好,直接管理的人的审判。
如果你能保证你可以实现一个在线的方案,互联网连接(检查时间服务器或您自己的认证服务器)。 当然,这带来了另一个依赖 - 如果互联网消失了,你的用户无法正常工作。
最后,我想说购买第三方授权解决方案 - 它仍然不是牢不可破的,但它可能会比一些你可以做自己没有很多的时间和精力,更稳健。
存储最后运行日期,每当系统日期之前,终止审判。
唯一的故障安全的方法是验证对你的主机,假设没有一个破解你的连接代码服务的应用程序;)
只要他们可以清除注册表值/独立存储文件/保存设置:他们可以重新开始审理。 有没有什么你可以做的。 这就是为什么人们在试用软件选择功能有所减少,除了基于时间的试用期。
如果其接受的允许比如说8个小时的庭审使用(而不是30天试用版),然后之一删除在系统日期时间的依赖方式是通过使用你的应用程序一个计时器,触发说每一分钟。 这些计数等每一个应用程序被运行时,它会积累的总使用分钟数。 然后,您可以存储这个计数值的地方,如在注册表中。
这是简单的商店评估结束日期每天进行检查。 为了避免由日期操作延长使用,保持在应用程序中一个小时计数; 不断递增,写它注册表中。 检查应与评估结束日期和小时计数都做不超过24(可能是30与一些teolrence)。
想想也是关于:
保存截止申请的日期时间,未来它的午饭时间你的应用程序将能够如果日期时间设置更改或不检测(至少他们不能早于截止时间前将其更改为东西)。 例如:
在申请截止:
节省的时间=> 15时34分2014年3月31日(保存)
下次启动时的应用:
检查Datime.Now> 15:34 2014年3月31日。 (这样他们就不能去那个波纹管...)
添加 :
尝试以某种方式对系统的日期时间设置集成到应用程序的使用:生成发票,票,收据......什么!
您可以使用免费的项目Libprot。 该网站是https://github.com/libprot/trunk 。
我们的想法是,它应该是简单的,易于使用。 你可以花$$$上的保护,但它可能在一个星期内被黑客攻破。 如果有人想这样做你的代码的逆向工程再没有人能阻止它。 我的建议是用简单的方式工作的。
写这样的字符串:
X公司| 2014年10月2日| 2015年12月1日
其中,2014年2月10日是当前日期,如果系统时间不到别人更改的系统时钟=>我们不应该运行
2015年12月1日 - 到什么时候的关键是有效的
和公司谁买的名称/下载它。
该字符串应该用非对称算法和公钥/私钥进行混淆,编码到您可通过电子邮件发送,例如字符串。
您可能还需要具有验证某些网络服务。 当互联网连接上你可以验证的关键,如果是黑客入侵,供公众在网上你可以禁止它。 或者有人会写密钥生成器可能会验证关键的是真实的。
您可以在您的网站添加一些PHP / Java脚本自动发送试用码。