2009-09-13 88 views
8

C#2008 SP1创建应用程序试用期

我写,我想给一个选择的客户的申请后,将到期。

有什么用,这样的试用期(1个月)的应用程序将不再工作后最好的解决方案。

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

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

+0

相关:http://stackoverflow.com/q/20676008/1207195 – 2015-06-23 10:11:05

回答

9

如果你使用基于日期的方法,可以通过用户设置他们的日期来回避(虽然我怀疑人们经常这样做)。另一种方法是允许应用程序在过期之前启动若干次;这种方法显然会忽略任何日期更改。

我的首选方法是那些能够正常使用程序的关键,但并不对其评价的关键(如保存你的工作能力,例如)应用的禁用部分。我用我自己的软件来做这件事,然后在他们购买完整的程序时向他们发送他们计算机独有的解锁代码。这种方法的一个主要优势是已安装的演示永远是潜在的销售工具。我宁愿让我的程序在某种程度上工作。我不认为一个“对不起,这个程序已经过期”的消息会产生很多销售。

+1

如果你采取了这种方法,那么程序中的“缺失”功能仍然存在;例如,你可能会瘫痪它,所以保存/加载需要5分钟。然后,他们将拥有真正的全功能,但该计划将很难完全使用,直到他们注册。 – 2009-09-13 14:33:39

+0

@马克:我一直打算缺失的功能仍然是存在的试玩版,让他们只需要输入解锁码,使一切。我喜欢你关于离开功能的想法,但却以令人讨厌的方式瘫痪了它。我的另一个想法是允许保存工作,但标记文件的方式是防止在购买完整版本之前重新打开文件。 – MusiGenesis 2009-09-13 14:54:12

+0

实际上有可能通过记录应用程序启动和关闭的时间(以及其他方式)并比较这些时间以查看时钟是否已被设置回来,从而难以规避基于时间的方法。 – CannibalSmith 2009-09-13 14:57:16

1

最简单的方案(并且作为结果的最简单的规避)是存储程序首次安装日期(或运行)在一个文件中,然后检查,对当前日期每当程序启动。如果差异> 30天,则退出程序。

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

如果存储在服务器上的日期,并从服务器获取日期,那么这是更安全的,但并不意味着用户必须有一个开放的互联网连接来使用你的软件。

5

您的选择:

  1. 在安装写一些东西到注册表中,因此,这是很难找到,后来删除。这样,你的应用程序就会知道它最初的安装时间,以及它是否仍然可以正常工作或停止工作。如果注册表清理良好或操作系统重新安装,此方法将失败。

  2. 使用某种联机验证服务。将没有[1]的缺点。还将允许您监视超越操作系统安装的应用程序活动。为此,您需要以某种方式唯一标识用户PC并将其签名传输到您的服务器。

+0

家伙,你说:“写的东西到注册表,使得它很难找到”。如果Sysinternals中存在ProcMon这样的优秀工具(https://technet.microsoft.com/en-us/sysinternals/bb896645.aspx),那么如何隐藏用户的任何内容。它显示了您在注册表中编写的每个字符串。在隐藏位置创建文件的情况也是如此。计算机上没有隐藏的地方。 – Evgeny 2015-06-20 07:57:19

2

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

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

2

这是我做的阻止用户玩日期/时间设置和回溯约会时钟的技巧。

当应用程序首次运行时,加密在注册表中的首次运行日期和结束审判日期和上次运行日期。每次应用程序运行时,解密并检查结束试用日期,而不是系统日期。此解决方案适用于没有互联网连接的用户。

+2

我可能很傻,但我不明白这是如何工作的。您需要从某个地方获得日期/时间,CMOS,OS时钟,互联网时间服务器以查看试用版是否已过期。 – Cameron 2015-01-30 02:42:11

+0

如果用户清理注册表会怎么样?我认为最好的方法是使用密钥在线激活应用程序。 – 2015-06-16 06:53:26