C# 抓取 硬體序號
C# 抓取 硬體序號
Code
public static String GetDeviceCode()//C# 抓取 硬體序號
{
String StrResult = "";
//擷取cpu序號
string cpuInfo = "";
ManagementClass cimobject = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = cimobject.GetInstances();
foreach (ManagementObject mo in moc)
{
if (mo.Properties["ProcessorId"].Value != null)
cpuInfo += mo.Properties["ProcessorId"].Value.ToString();
}
StrResult += cpuInfo;
//擷取硬碟ID
string HDid = "";
ManagementClass cimobject1 = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection moc1 = cimobject1.GetInstances();
foreach (ManagementObject mo in moc1)
{
if (mo.Properties["Model"].Value != null)
HDid += (string)mo.Properties["Model"].Value.ToString();
}
StrResult += HDid;
//擷取網卡硬體地址
string MACAddress = "";
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc2 = mc.GetInstances();
foreach (ManagementObject mo in moc2)
{
if ((bool)mo["IPEnabled"] == true && mo["MacAddress"] != null)
MACAddress += mo["MacAddress"].ToString();
mo.Dispose();
}
StrResult += MACAddress;
StrResult = StrResult.Replace(" ", "");
StrResult = StrResult.Replace(":", "");
string hash;
using (MD5 md5 = MD5.Create())//MD5 加密運算
{
byte[] inputBytes = Encoding.UTF8.GetBytes(StrResult);
byte[] hashBytes = md5.ComputeHash(inputBytes);
StringBuilder builder = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
{
builder.Append(hashBytes[i].ToString("x2")); // 将每个字节转换为两位的十六进制字符串
}
hash = builder.ToString();
}
char[] charArray = hash.ToCharArray();//C#字串轉字元陣列
Array.Reverse(charArray);//C#字元陣列反轉
StrResult = hash + new string(charArray);//C#字元陣列轉字串[C#字串反轉]
return StrResult.ToUpper(); //64個英文字
}