using System; using System.Collections.Generic; using System.Linq; using System.Management; using System.Text; using System.Threading.Tasks; namespace WebAPIBase.Utils { public class Computer { /// /// cpu序列号 /// public static string CpuID; //1.cpu序列号 /// /// mac序列号 /// public static string MacAddress; //2.mac序列号 /// /// 硬盘id /// public static string DiskID; //3.硬盘id /// /// .ip地址 /// public static string IpAddress; //4.ip地址 /// /// 内存量 单位:M /// public static string TotalPhysicalMemory; //8.内存量 单位:M /// /// 主板 /// public static string MotherboardID; static Computer() { CpuID = GetCpuID(); MacAddress = GetMacAddress(); DiskID = GetDiskID(); IpAddress = GetIPAddress(); MotherboardID = GetMotherboardID(); TotalPhysicalMemory = GetTotalPhysicalMemory(); } /// /// 获取CPU序列号代码 /// /// static string GetCpuID() { try { string cpuInfo = "";//cpu序列号 ManagementClass mc = new ManagementClass("Win32_Processor"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { cpuInfo = mo.Properties["ProcessorId"].Value.ToString(); } moc = null; mc = null; return cpuInfo; } catch { return "unknow"; } finally { } } /// /// 获取网卡硬件地址 /// /// static string GetMacAddress() { try { string mac = ""; ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { if ((bool)mo["IPEnabled"] == true) { mac = mo["MacAddress"].ToString(); break; } } moc = null; mc = null; return mac; } catch { return "unknow"; } finally { } } /// /// 获取硬盘ID /// /// static string GetDiskID() { try { String HDid = ""; ManagementClass mc = new ManagementClass("Win32_DiskDrive"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { HDid = (string)mo.Properties["Model"].Value; } moc = null; mc = null; return HDid; } catch { return "unknow"; } finally { } } /// /// 获取主板序列号 /// /// private static string GetMotherboardID() { var myMb = new ManagementClass("Win32_BaseBoard").GetInstances(); var serial = ""; foreach (ManagementObject mb in myMb) { var val = mb.Properties["SerialNumber"].Value; serial += val == null ? "" : val.ToString(); } return serial; } /// /// 获取IP地址 /// /// static string GetIPAddress() { try { string st = ""; ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { if ((bool)mo["IPEnabled"] == true) { //st=mo["IpAddress"].ToString(); System.Array ar; ar = (System.Array)(mo.Properties["IpAddress"].Value); st = ar.GetValue(0).ToString(); break; } } moc = null; mc = null; return st; } catch { return "unknow"; } finally { } } /// /// 操作系统的登录用户名 /// /// static string GetUserName() { try { string un = ""; un = Environment.UserName; return un; } catch { return "unknow"; } finally { } } /// /// 获取计算机名 /// /// static string GetComputerName() { try { return System.Environment.MachineName; } catch { return "unknow"; } finally { } } /// /// PC类型 /// /// static string GetSystemType() { try { string st = ""; ManagementClass mc = new ManagementClass("Win32_ComputerSystem"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { st = mo["SystemType"].ToString(); } moc = null; mc = null; return st; } catch { return "unknow"; } finally { } } /// /// 物理内存 /// /// static string GetTotalPhysicalMemory() { try { string st = ""; ManagementClass mc = new ManagementClass("Win32_ComputerSystem"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { st = mo["TotalPhysicalMemory"].ToString(); } moc = null; mc = null; return st; } catch { return "unknow"; } finally { } } /// /// 根据cpu序列化,主板id及内存信息生成16为授权码(16位HASH代码) /// /// public static string AuthorizationCode(string cpu, string motherBoard, string physicalMemory) { string sensorID = string.Empty; string basicID = cpu + motherBoard + physicalMemory; System.Security.Cryptography.MD5CryptoServiceProvider mD5CryptoServiceProvider = new System.Security.Cryptography.MD5CryptoServiceProvider(); byte[] hashedBuff = mD5CryptoServiceProvider.ComputeHash(Encoding.UTF8.GetBytes(basicID)); for (int i = 4; i < 12; i++) { sensorID += hashedBuff[i].ToString("X2"); } return sensorID; } } }