This question already has answers here:
Unique computer ID
(3个答案)
已关闭6年。
我之前问过一个类似的问题,但我现在正在减少对我需要的一些限制。
我需要使用 C# 高效地在计算机上找到唯一标识符。它应该在任何特定计算机上始终保持不变,并且可以是许多因素的组合 - 只要它易于检索。
我想过在 WMI 网络查询中使用 MAC 地址,但这太慢了,因为通常有 10 个以上的适配器。使用 WHERE IPEnabled=true 子句可能会更好,但我认为可能有比这更好的方法。
有想法吗?
(P.S.它不必完全独特。只要碰撞的机会很小,它就是完美的。)
//然后可以获取主板序列号:
您可以合并以上两个并获得唯一的ID
同时查看此链接Finding Hardware ID, CPU ID, Motherboard ID, Hard-Disk ID of a computer
(3个答案)
已关闭6年。
我之前问过一个类似的问题,但我现在正在减少对我需要的一些限制。
我需要使用 C# 高效地在计算机上找到唯一标识符。它应该在任何特定计算机上始终保持不变,并且可以是许多因素的组合 - 只要它易于检索。
我想过在 WMI 网络查询中使用 MAC 地址,但这太慢了,因为通常有 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/