我在客户的 PC 上安装了一个软件,我根据客户的 CPU ID 和主板 ID 将许可证密钥提供给客户。此代码在大多数 PC 上都能正常工作,但有时会返回错误的 CPU 或 MB 值,例如:
CPU ID = “0000000000000000”</p>
MB = “” // 空字符串
string results = string.Empty;
string cpuID = string.Empty;
ManagementClass mc = new ManagementClass("win32_processor");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
cpuID += mo.Properties["processorID"].Value.ToString();
}
results += cpuID;
//get motherboard ID:
string mbID = string.Empty;
string query = "SELECT * FROM Win32_BaseBoard";
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
foreach (ManagementObject info in searcher.Get())
{
mbID += info.GetPropertyValue("SerialNumber").ToString();
}
results += "\r\n" + mbID;
return results;
我处境艰难,因为这个问题很少见,我制作了大约 100 个许可证,而这种情况只发生了 5 次,它发生在客户端 PC 上而不是我的 PC 上,所以尝试新代码真的很难。请问有什么想法吗?或者有人知道可能的原因是什么。谢谢