C# 创建将在试用期后过期的应用程序

C# 创建将在试用期后过期的应用程序,c#,trialware,C#,Trialware,C 2008 SP1 我正在写一个应用程序,我想给一些选定的客户 在试用期1个月后,应用程序将不再工作,最好的解决方案是什么 我在想,如果他们有兴趣购买该软件,我会给他们一个许可证密钥或其他东西,以解锁应用程序 我有一个非常有限的预算,因为我自己的工作。那么有没有免费的第三方产品可以做到这一点呢?最简单的解决方案,因此最简单的规避方法是将程序首次安装或运行的日期存储在一个文件中,然后在程序启动时对照当前日期进行检查。如果差异大于30天,则退出该计划 通过将日期存储在更模糊的地方或用户更难篡改的地

C 2008 SP1

我正在写一个应用程序,我想给一些选定的客户

在试用期1个月后,应用程序将不再工作,最好的解决方案是什么

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


我有一个非常有限的预算,因为我自己的工作。那么有没有免费的第三方产品可以做到这一点呢?

最简单的解决方案,因此最简单的规避方法是将程序首次安装或运行的日期存储在一个文件中,然后在程序启动时对照当前日期进行检查。如果差异大于30天,则退出该计划

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

如果您将日期存储在服务器上,并从服务器上获取日期,则这会更加安全,但这确实意味着用户必须具有打开的internet连接才能使用您的软件。

您的选项:

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

使用某种在线验证服务。将不会有[1]的缺点。还将允许您监视操作系统安装以外的应用程序活动。为了实现这一点,您需要以某种方式唯一地识别用户PC,并将其签名传输到您的服务器


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


我的首选方法是禁用对程序的正常使用至关重要但对其评估不重要的应用程序部分,例如保存工作的能力。我用自己的软件来做这件事,然后在他们购买完整的程序时,给他们发送一个电脑特有的解锁代码。这种方法的一个主要优点是,安装的演示将永远作为一种潜在的销售工具。我宁愿让我的程序在某种程度上一直有效;我不认为很抱歉,此程序已过期消息会产生许多销售额。

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


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

以下是我为阻止用户使用日期/时间设置和倒计时所做的操作


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

如果采用此方法,缺少的功能仍将存在于程序中;例如,您可以使其瘫痪,以便保存/加载需要5分钟。然后他们将拥有真正的完整功能,但在他们注册之前,程序将很难完全使用。@马克:我一直希望缺少的功能在演示版本中仍然存在,因此他们只需输入解锁代码即可启用所有功能。我喜欢你的想法,即保留功能,但以一种恼人的方式削弱它。我的另一个想法是让工作得以节省,但是,在购买完整版本之前,标记文件的方式可以防止文件被重新打开。实际上,通过记录应用程序启动和关闭的时间,以及相反的方式,比较这些时间,以查看时钟是否已延迟,很难规避基于时间的方法。使用一个月后,保存/加载已需要5分钟?他们想要钱吗-@罗布克:我这么做很简单,请不要告诉那些骗子。当应用程序第一次启动时,我生成一个唯一的随机产品ID并将其隐藏在注册表中。然后,此产品ID显示在“关于”框中,客户在购买应用程序时将其发送给我。然后,我生成一个仅适用于该特定产品ID的解锁代码。客户输入此代码,我的应用程序将进行比较
它将在注册表中输入产品ID,然后解锁程序。通过这种方式,除了重新安装一个完整的操作系统外,解锁可以在任何情况下存活下来。我可能有点傻,但我看不出这是怎么回事。您需要某处的日期/时间、CMOS、操作系统时钟、internet时间服务器,以查看试用期是否已过期。如果用户清理注册表怎么办?我认为最好的方法是使用键在线激活应用程序。伙计们,你们说过要在注册表中写些东西,这样很难找到。如果系统内部有ProcMon这样一个伟大的工具,你怎么能对用户隐藏任何东西呢。它精确地显示您在注册表中写入的每个字符串。与在隐藏位置创建文件的情况相同。计算机上没有隐藏的位置。相关: