如何从计算机生成唯一密钥以许可我的应用程序?

4

我希望为我的Windows应用程序提供许可证。

我在网上搜索时发现可以使用MAC地址,但同时也可以被欺骗。

而且每个密钥都存在问题,例如:

  1. CPU ID
  2. MotherBoard ID
  3. HDD序列号

有什么解决方案吗?

很抱歉我的英语不好。


1
这里实际上有数十个关于生成唯一许可证密钥的先前问题。搜索“[c#] licensing hardware”以获取与C#相关的列表。其中一个是硬件锁定许可证 - Ken White
你在寻找指南吗? - Sam I am says Reinstate Monica
3个回答

2
为什么你想要将应用程序与计算机链接得如此安全?如果用户购买了你的应用程序并在他的机器上安装了它,然后突然决定不再喜欢这台机器并购买了一台新机器,如果你的应用程序许可证只与那台机器有关,这意味着他必须再次购买该应用程序...
相反,只需使用唯一的密钥生成器即可。这方面有很多例子,如果你不想在同一台机器上安装几个版本的应用程序,你可以在注册表中做个记录。
以下是一些例子。

http://www.codeproject.com/Articles/11012/License-Key-Generation

http://www.jagregory.com/writings/rhino-licensing/


我想限制用户数量。例如,如果客户购买了10个用户,则只有10个人可以使用。我该如何实现这种情况? - RealSteel

2

如果你采用这种许可证方式,你需要预期会成为一个持续的行政烦恼,来跟踪你的客户许可证。一旦你拥有了几百个客户,你将惊讶地发现你会频繁接到电话请求更改密钥,否则客户可能更换整个计算机,需要更新许可证在新机器上运行你的软件。在我曾工作的公司里,我们几乎每天都会接到这些电话。

你还需要相信客户会停止在旧电脑(或网络适配器)上使用您的软件,如果你给他们一个新的密钥。如果你一开始就不能相信他们遵守许可证,那么你如何相信他们会丢弃旧密钥呢?

如果你没有计划如何支持这种行政活动,不要以这种方式许可你的产品。这只会给本来愿意合作的好客户带来不便。

试着参考通过加密狗许可的技术。


1

标准的个人电脑没有可用于唯一标识其的信息。如你所说,最好的方法是使用组件的序列号。因为架构、Windows驱动程序模型等是公开的,这些信息可以被欺骗。同时,你也需要考虑到用户如果更换了这些组件可能会导致你的许可证验证失败。

像手机这样的现代设备有唯一可识别的信息(例如Android的设备ID)用于这些目的。

我建议你最好的选择是识别用户,而不是机器。如果可能的话,使用用户名/密码组合,并从服务器端进行验证。否则,你就必须冒险使用序列号。

你可以使用第三方解决方案,例如应用商店/市场,它本质上在每次应用程序启动时都在服务器端进行验证。一个例子是Microsoft Digital Locker,它在Windows Vista中引入,但已不再提供。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接