当我必须用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;
}