<分区>
我之前问过类似的问题,但我现在减少了一些对我需要的限制。
我需要使用 C# 在计算机上高效地找到唯一标识符。它应该在任何特定计算机上始终保持不变,并且可以是许多因素的组合 - 只要它易于检索。
我曾考虑过将 MAC 地址用于 WMI 网络查询,但这太慢了,因为通常有 10 个以上的适配器。使用 WHERE IPEnabled=true 子句可能会更好,但我认为可能还有比这更好的东西。
想法?
(P.S. 不一定非得是独一无二的,只要碰撞几率很小就完美了。)
<分区>
我之前问过类似的问题,但我现在减少了一些对我需要的限制。
我需要使用 C# 在计算机上高效地找到唯一标识符。它应该在任何特定计算机上始终保持不变,并且可以是许多因素的组合 - 只要它易于检索。
我曾考虑过将 MAC 地址用于 WMI 网络查询,但这太慢了,因为通常有 10 个以上的适配器。使用 WHERE IPEnabled=true 子句可能会更好,但我认为可能还有比这更好的东西。
想法?
(P.S. 不一定非得是独一无二的,只要碰撞几率很小就完美了。)
最佳答案
首先获取处理器 ID,如下所示:(添加对 System.Management
的引用)
ManagementObjectCollection mbsList = null;
ManagementObjectSearcher mbs = new ManagementObjectSearcher("Select * From Win32_processor");
mbsList = mbs.Get();
string id = "";
foreach (ManagementObject mo in mbsList)
{
id = mo["ProcessorID"].ToString();
}
//然后就可以得到主板序列号了:
ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
ManagementObjectCollection moc = mos.Get();
string motherBoard = "";
foreach (ManagementObject mo in moc)
{
motherBoard = (string)mo["SerialNumber"];
}
你可以把上面两个连接起来得到一个唯一的ID
string myUniqueID = id + motherBoard;
Console.WriteLine(myUniqueID);
另请查看此链接 Finding Hardware ID, CPU ID, Motherboard ID, Hard-Disk ID of a computer
关于c# - 在 C# 中获取唯一标识符的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10310328/