生成PC.Net的唯一ID(指纹)



当我必须用WinForm应用程序C#为PC生成唯一ID时,我有throuble

大多数问题都来自于虚拟机。我使用这个代码。

即使我注释了CPUID代码,每次我重新启动虚拟机(VirtualBox)时它都会更改。

考虑到我也可以使用虚拟机,怎么能获得唯一的指纹呢?

感谢

此解决方案有一些潜在的注意事项,但您可以使用HDD的MAC地址或序列号,或者两者都使用:

以下是获取MAC地址的代码:

/// <summary>
/// returns the mac address of the first operation nic found.
/// </summary>
/// <returns></returns>
private string GetMacAddress()
{
    string macAddresses = "";
    foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
    {
        if (nic.OperationalStatus == OperationalStatus.Up)
        {
            macAddresses += nic.GetPhysicalAddress().ToString();
            break;
        }
    }
    return macAddresses;
}

以下是获取HDD序列号的代码:

using System.Management;
public string GetHDDSerial()
{
    ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");    
    ManagementObjectCollection managementObjects = searcher.Get();
    foreach (ManagementObject obj in managementObjects)
    {
        if (obj["SerialNumber"] != null)
            return obj["SerialNumber"].ToString();
    }
    return string.Empty;
}

最新更新