2012-08-10 76 views
2

我创建了一个基于Windows的软件应用程序。不久即将开始生活。意味着我的客户可以在我的网站上下载后使用它。此外,我还提到我使用的软件只能使用我提供的密钥。最初它会是免费试用版。为只能使用一次的软件创建一个唯一的密钥

这里即时通讯生成35位密钥及其唯一的一个。意思是一旦用户要求我输入密钥,并且我向他/她发送了密钥,他/她就可以使用我的应用程序。但真正的问题出现在这里。

我希望代码只能使用一次。例如:如果我的应用程序是由用户下载的,他可以使用密钥来使用我的应用程序,但是其他任何人都不能使用相同的密钥。让我们假设我的密钥是xxx,相同的代码xxx不应该用于任何其他下载了我的应用程序的人。只是为了让软件只能由真正的用户使用。

我也通过这个环节

http://social.msdn.microsoft.com/Forums/zh/winformssetup/thread/301913a0-ecf9-4095-8d66-a3f4baeea6eb

了丹尼·斯坦顿

我还没有满足我的要求。

首先,我想获得注册人下载我的应用程序的IP地址,并基于该限制,我可以限制我的密钥只能由其IP地址将存储在我的数据库中的人使用。但我认为这将是错误/不必要的过程。并且为了使用我的应用程序,人员网络电缆应该每次插入。但它不能解决我的目的。

其次,我想创建一个应用程序ping到我的服务器或我的过程。像最初当用户运行应用程序时(在线或离线),应用程序应该可以工作,但只要他将网络电缆/插头连接到网络,应该向我的服务器或我提供警报。从我这边我可以检查用户是否使用我提供给他的钥匙。如果无论如何用户不是真的,我应该能够阻止他再次使用我的应用程序。从我身边,我决定将钥匙存储在我提供的数据库中。并且每个请求的密钥在另一个表中。林不知道我是否正确。但截至目前,这是我脑海中的事情。

但总而言之,最终我希望只有一个用户使用密钥。只是为了避免一百万个不同的用户使用我的应用程序与一个密钥。

林不知道我提供的任何想法。

现在有没有办法实现这一目标?

+0

为什么不使用guid?它的不确定性,并不会产生相同的结果 – 2012-08-10 11:32:42

+0

我第二。每个用户生成的Guid将始终是唯一的。存储IP对此没有意义,因为每次用户登录网络时,这取决于提供商,可能会有所不同。即使公司拥有固定IP,您也无法区分几个用户组成同一家公司。 – 2012-08-10 11:40:50

+0

@Mutu Yolbulan:我想要的是做一些事情,以防止许多人使用一个密钥来访问我的应用程序。我不知道该怎么做。我创建了一个生成唯一代码的不同应用程序,因此创建唯一密钥不是我的问题。所有我想到的是,相同的密钥不应该被使用一次以上。例如:如果密钥是“xxx”,并且用户只下载了我的应用程序,他可以使用我的应用程序使用密钥。相同的密钥“xxx”不应该被其他人使用。希望你了解我的查询。我试图具体。 – Vikneshwar 2012-08-10 11:51:20

回答

3

获取他机器的硬件指纹并根据它生成密钥。您的软件应该检查​​是否为特定机器生成了密钥。 但是,这需要在线激活您的软件。您可以通过两种方式执行此操作:

  • 让用户启动未激活的应用程序并显示他发送给您的硬件指纹。您然后返回他进入的激活密钥。
  • 您的应用程序会自动连接到激活服务,并发送指纹,接收激活密钥并将其存储

还有一点应该包含有关硬件的几个组件的信息,并允许用户更改一个或几个。例如。需要指定硬盘序列号,MAC地址,主板序列号和一些CPU信息(例如系列名称),您应允许用户升级或添加另一个硬盘。

还有关于getting hardware information的SO话题。

0

你必须做出一个选择,我认为你的关键系统会越强,对用户来说越难。

IE:一个好的系统是产生一个硬件密钥,所以它只被安装在已注册的计算机上。虽然它运行良好,但购买新计算机的用户可能会遇到麻烦,要求您注册新的硬件密钥。

如果你只给他们一个密钥(如序列号),它可能很容易在另一台计算机上使用它。所以基本上,如果你不认为很多用户会放弃他们的密钥,因为软件不会被很多人使用,我不会得到一个“超强”的硬件认证。

另外,不要注册一个IP地址,每个拥有动态IP的人都会恨你这样做。