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

时间:2012-03-27 16:45:05

标签: .net fingerprint

我遇到了麻烦,而我必须使用我的WinForm应用程序C#为PC生成唯一的ID#

大多数问题来自虚拟机。我用这个code

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

考虑到我也可以使用虚拟机,如何才能获得独特的指纹?

由于

1 个答案:

答案 0 :(得分:0)

此解决方案有一些潜在的警告,但您可以使用MAC地址或HDD的序列号,或两者兼而有之:

以下是获取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;
}

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

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;
}