Answers:
我建议您阅读
有关为许可目的为计算机生成唯一密钥(指纹)的代码项目文章。
您将在此处找到C#中的代码,该代码又由作者找到,他本人用于满足许可需求。
作者列出了这些非常明智的观点:
- 由于用户通常不会更改这些部件,因此只能从主板,处理器和BIOS生成密钥。
- 不要使用MAC ID,图形卡ID和磁盘ID,因为更改这些设备非常普遍。
- 获取设备ID需要花费大量时间。因此,将指纹生成函数设为静态并将其保存在静态变量中,以便在整个应用程序中仅生成一次密钥。
关于返回为空的主板序列号,这是另一回事,值得进一步研究。可能是本文中包含的代码会更好地工作,或者在无法访问主板串行的情况下,CPU和磁盘可能会起作用。
我指出,您不需要使用通用数据的函数,因为不同的硬件可能没有所需的所有序列号。您所需要的只是连接来自多个来源的数据,跳过那些不可用的数据,只是合理地确保从可用数据源得到的指纹字符串的总和将是非常独特的。
主板序列号是一个很好的标识符,但并非所有制造商都将其编码为固件。
MAC地址可以,但是哪一个呢?笔记本电脑可以通过以太网,板载WiFi或USB WiFi连接,以获得更好的性能。
有一个系统UUID,根据定义,它是唯一的,但是我不能确定它是否已普遍实现。