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

时间:2013-03-01 02:54:21

标签: c# asp.net winforms

我想为我的Windows应用程序提供许可。 因为,我在网上搜索我可以使用MAC地址。但同时,它可能是欺骗性的。 并且每个KEY都存在问题,如:

  1. CPU ID
  2. MotherBoard ID
  3. 硬盘序列号
  4. 这是什么解决方案?

    抱歉我的英语不好。

3 个答案:

答案 0 :(得分:2)

为什么您希望如此安全,以便将应用程序链接到计算机,如果用户在他的计算机上购买了应用程序安装,那么突然之间决定他不再喜欢这台计算机并且如果您的应用程序购买了新计算机许可证只涉及该机器,这意味着他必须再次购买该应用程序....

而只是使用一个独特的密钥生成器,这里有很多例子,如果你不想在同一台机器上安装多个版本的应用程序,你总是可以在注册时做一个注释。

这里有几个例子

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

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

答案 1 :(得分:2)

如果您执行此类许可,则必须预计它将成为跟踪客户许可证的持续管理工作。一旦你有几百个客户,你会惊讶于你有多少次接到电话请求更改密钥或者客户可能会更换他们的整个机器,并需要更新的许可证才能在新机器上运行你的软件。几乎我每天都在我工作的公司接到这些电话。

如果您给他们一个新密钥,您还需要信任客户停止在旧计算机(或网络适配器)上使用您的软件。如果你不能相信他们首先遵守许可证,你怎么能相信他们会扔掉旧钥匙?

如果您不打算如何支持此管理活动,请不要以这种方式许可您的产品。你只会给那些本来会合作的好客户带来不便。

尝试通过usb 加密狗

参考许可技术

答案 2 :(得分:1)

标准PC上没有任何信息,您可以使用它来唯一识别它。正如您所说,您最好的方法是使用组件的序列号。因为体系结构,Windows驱动程序模型.etc。是开放的,这些可以是欺骗性的。您还必须考虑到,如果用户失败,您的用户可能会更换这些组件,这可能会导致许可证验证失败。

移动电话等现代设备具有独特的可识别信息(例如:Android的设备ID),用于此类用途。

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

每次应用程序启动时,您都可以使用第三方解决方案,例如AppStore / Market,它基本上在服务器端进行验证。一个例子是Windows Vista引入的Microsoft Digital Locker,但它不再可用。