This question already has answers here:
Unique computer ID

(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/

10-13 06:07
查看更多