0

我正在使用下面的代码来获取处理器 ID:

System.Management.ManagementClass theClass = new System.Management.ManagementClass("Win32_Processor");
System.Management.ManagementObjectCollection theCollectionOfResults = theClass.GetInstances();

foreach (System.Management.ManagementObject currentResult in theCollectionOfResults)
{
    MessageBox.Show(currentResult["ProcessorID"].ToString());
}

处理器 ID 是每台计算机的唯一 ID 吗?我想为每台计算机生成一个随机唯一编号,以用作 AES 加密密钥。我不想使用 MAC 地址,因为我知道 MAC 地址可以更改。

4

2 回答 2

0

这是不好的解决方案,因为 CPU 必须支持 CPUID 指令,并且系统可能包含多个 CPU。

于 2012-06-13T13:43:30.760 回答
0
  1. 处理器 ID 不保证对每个 cpu 都是唯一的,也不保证完全存在。
  2. 硬件可以更换——你无法改变这一事实。

建议:
如果您需要唯一标识一台机器 - 可以使用处理器 ID 或 MAC 地址或两者都用于唯一性。(或任何其他硬件相关编号)。但是您必须记住,您识别的是硬件 - 而不是用户,因此如果硬件发生了变化,这就像您认识的人做了整容但现在您不认识他一样。

如果您需要识别用户(我认为这更好),只需让他选择用户名和密码即可。

如果您需要确保只有一个先前确定的用户正在使用您的应用程序,并且您担心他会盗版您的应用程序..唯一的方法是拥有一个服务器/中心点。

于 2012-06-13T13:45:37.693 回答