创建一个试用期后过期的应用程序

C#2008 SP1

我正在编写一份我想要给一些客户提供的应用程序。

使用的最佳解决方案是什么,以便在跟踪期(1个月)之后应用程序将不再起作用。

我想如果他们有兴趣购买软件,我会给他们许可证密钥或其他东西,以解锁应用程序。

因为我自己工作,所以预算非常有限。 那么有没有免费的第三方产品呢?

如果您使用基于日期的方法,可以通过用户设置其日期来避开它(尽管我怀疑人们经常这样做)。 另一种方法是允许应用程序在到期前启动一定次数; 这种方法显然忽略了任何日期更改。

我首选的方法是禁用对程序正常使用至关重要的应用程序部分,但对其评估并不重要(例如,保存工作的能力)。 我使用自己的软件执行此操作,然后在购买完整程序时向他们发送解锁代码,这些代码是他们的计算机所特有的。 这种方法的一个主要优点是安装的演示可以永久地充当潜在的销售工具 。 我宁愿让我的程序在某种程度上工作; 我不认为“抱歉,此程序已过期”消息会产生许多销售。

你的选择:

  1. 在安装时向注册表写入内容,以便以后很难找到并删除。 通过这种方式,您的应用程序将知道它最初安装的时间以及它是否仍然可以立即工作或停止。 如果清理好注册表或重新安装操作系统,此方法将失败。

  2. 使用某种在线validation服务。 将免于[1]的缺点。 还可以让您监控超出操作系统安装的应用程序活动。 为此,您需要以某种方式唯一地识别用户PC并将其签名传输到您的服务器。

这是我用来阻止用户玩日期/时间设置并重新约会时间的技巧。

当应用程序第一次运行时,在注册表中加密第一个运行日期和结束试用日期以及上次运行日期。 每次应用程序运行时,解密并检查最终试用日期,而不是系统日期。 此解决方案适用于没有Internet连接的用户。

在安装过程中编写注册表项。 密钥将包含安装日期。 必须加密注册表项中的日期。

启动应用程序时,请检查是否存在此注册表项。 如果它不存在,则关闭应用程序,否则解密日期,检查试用期并在试用期结束时关闭应用程序。

最简单的解决方案(因此最简单的规避)是将程序首次安装(或运行)的日期存储在文件中,然后在程序启动时检查当前日期。 如果差异> 30天,则退出程序。

通过将日期存储在更加模糊的地方或者用户更难以篡改的地方(例如注册表),那么它们越来越难以绕过系统并获得更多时间来使用它,但不会阻止它们在他们的电脑上倒拨时钟。

如果您将日期存储在服务器上并从服务器获取日期,那么这样更安全,但这意味着用户必须具有开放的Internet连接才能使用您的软件。