C# 2008 SP1
我正在编写一个应用程序,我想提供给选定数量的客户。
什么是最好的解决方案,以便在试用期(1 个月)之后应用程序将不再工作。
我在想,如果他们有兴趣购买该软件,我会给他们一个许可证密钥或其他东西,以解锁该应用程序。
我的预算非常有限,因为我自己工作。那么有没有免费的第三方产品可以做到这一点?
如果您使用基于日期的方法,则可以通过用户设置他们的日期来规避它(尽管我怀疑人们经常这样做)。另一种方法是允许应用程序在到期前启动一定次数;这种方法显然忽略了任何日期更改。
我首选的方法是禁用对程序的正常使用至关重要但对其评估不重要的应用程序部分(例如,保存您的工作的能力)。我用我自己的软件来做这件事,然后在他们购买完整程序时向他们发送一个他们计算机独有的解锁代码。这种方法的一个主要优点是安装的演示永远可以作为一种潜在的销售工具。我宁愿让我的程序在某种程度上始终有效;我不认为“对不起,这个程序已过期”的消息会产生很多销售。
您的选择:
在安装时将一些内容写入注册表,以便以后很难找到和删除。这样,您的应用程序将知道它最初是何时安装的,以及它现在应该仍然工作还是停止。如果注册表清理干净或重新安装操作系统,此方法将失败。
使用某种在线验证服务。将免于[1]的缺点。还将允许您监视超越操作系统安装的应用程序活动。为此,您需要以某种方式唯一标识用户 PC 并将其签名传输到您的服务器。
这是我阻止用户使用日期/时间设置和回溯时钟的技巧。
当应用程序第一次运行时,在注册表中加密第一次运行日期和结束试用日期和最后一次运行日期。并在每次应用程序运行时从那里解密并检查结束试用日期而不是系统日期。此解决方案适用于没有互联网连接的用户。
在安装过程中编写注册表项。密钥将包含安装日期。注册表项中的日期必须加密。
当您的应用程序启动时,请检查此注册表项是否存在。如果不存在,请关闭应用程序,否则解密日期,检查试用期并在试用期结束时关闭应用程序。
最简单的解决方案(因此也是最容易规避的)是将程序首次安装(或运行)的日期存储在一个文件中,然后在程序启动时根据当前日期检查该日期。如果差值大于 30 天,则退出程序。
通过将日期存储在更隐蔽的地方或用户更难篡改的地方(例如注册表),他们会越来越难以绕过系统并获得更多时间来使用它,但不会阻止他们在他们的 PC 上倒带时钟。
如果您将日期存储在您的服务器上并从您的服务器上获取日期,那么这会更安全,但确实意味着用户必须有一个开放的互联网连接才能使用您的软件。