我想为我的 Windows 应用程序提供许可。因为,我在网上搜索,我可以使用 MAC 地址。但同时,它可以被欺骗。每个 KEY 都存在问题,例如:
- 处理器编号
- 主板编号
- 硬盘序列号
解决方案是什么?
对不起,我的英语不好。
如果您进行这种类型的许可,您必须预料到跟踪您的客户的许可将成为一项持续的管理工作。一旦你有几百个客户,你会惊讶于你接到电话要求更改密钥的频率,否则客户可能会更换他们的整台机器,并且需要更新的许可证才能在新机器上运行你的软件。在我工作的公司,我们几乎每天都会接到这些电话。
如果您给他们一个新密钥,您还需要相信客户停止在旧计算机(或网络适配器)上使用您的软件。如果你一开始就不能相信他们会遵守许可证,你怎么能相信他们会扔掉旧钥匙呢?
如果您不计划如何支持此管理活动,请不要以这种方式许可您的产品。你只会给那些本来会合作的好客户带来不便。
尝试参考通过 USB加密狗获得许可的技术
你为什么要如此安全地将应用程序链接到计算机如果用户购买你的应用程序安装在他的机器上然后突然决定他不再喜欢这台机器并购买一个新的机器如果你的应用程序许可证只会与那台机器有关,这意味着他必须再次购买该应用程序....
相反,只需使用唯一的密钥生成器,有很多示例,如果您不想在同一台机器上安装多个版本的应用程序,您可以随时在注册表中记下。
这里有几个例子
http://www.codeproject.com/Articles/11012/License-Key-Generation
标准 PC 上没有可用于唯一标识它的信息。正如您所说,您最好的办法是使用组件的序列号。因为架构、Windows 驱动模型等。是开放的,这些可以被欺骗。您还必须考虑到,如果这些组件失败,您的用户可能会更换这些组件,这可能会导致您的许可证验证失败。
诸如手机之类的现代设备具有用于此类目的的唯一可识别信息(例如:Android 的设备 ID)。
我建议您最好的选择是识别用户,而不是机器。如果可能,请使用您从服务器端验证的用户名/密码组合。否则,您将不得不冒险使用序列号。
您可以使用第三方解决方案,例如 AppStore/Market,它本质上是在每次应用程序启动时在服务器端进行验证。一个例子是随 Windows Vista 引入的Microsoft Digital Locker,但它不再可用。