using MAX.Core.Cryptography; using System; using System.Management; namespace Store.Framework.Tools { /// /// 系统信息 /// public class HardwareTool { /// /// 机器硬件码 /// public static string HardWareCode { get; private set; } = ""; /// /// 机器硬件码新版 /// public static string HardWareCodeNew { get; private set; } = ""; /// /// 机器硬件码v3 /// public static string HardWareCodeV3 { get; private set; } = ""; /// /// 硬件信息 /// public static string MacInfo { get; private set; } = ""; /// /// 获取机器码 /// /// internal static void GetMacCode() { string sHostName = GethostName(); string sCpuSn = GetCPUSerialNumber(); string sDiskSn = GetDiskSerialNumber(); string sDiskSnNew = GetFirstDiskSnAndSignature(); string sOs = Environment.OSVersion.VersionString; HardWareCode = MD5Helper.Md5_32(sHostName + sCpuSn + sDiskSn + sOs); HardWareCodeNew = MD5Helper.Md5_32(sCpuSn + sDiskSn); HardWareCodeV3 = MD5Helper.Md5_32(sCpuSn + sDiskSnNew); } /// /// 取机器名 /// /// private static string GethostName() { string sHostName = System.Net.Dns.GetHostName(); MacInfo += "|HostName:" + sHostName; return sHostName; } /// /// 获取cpu序列号 /// /// private static string GetCPUSerialNumber() { string cpuSerialNumber = string.Empty; ManagementClass mc = new ManagementClass("Win32_Processor"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { cpuSerialNumber = mo["ProcessorId"].ToString(); MacInfo += "|CPU:" + mo["ProcessorId"].ToString() + "," + mo.Properties["Manufacturer"].Value.ToString().Trim() + "," + mo.Properties["Name"].Value.ToString().Trim(); break; } mc.Dispose(); moc.Dispose(); return cpuSerialNumber; } /// /// 获取硬盘序列号 /// /// private static string GetDiskSerialNumber() { ManagementObjectSearcher mos = new ManagementObjectSearcher(); mos.Query = new SelectQuery("Win32_DiskDrive", "", new string[] { "PNPDeviceID", "Signature" }); ManagementObjectCollection myCollection = mos.Get(); ManagementObjectCollection.ManagementObjectEnumerator em = myCollection.GetEnumerator(); em.MoveNext(); ManagementBaseObject moo = em.Current; string id = ""; if (moo.Properties["signature"].Value != null) { id = moo.Properties["signature"].Value.ToString().Trim(); } MacInfo += "|DiskSignature:" + id; return id; } /// /// 获取硬盘序列号-New /// /// private static string GetFirstDiskSnAndSignature() { ManagementObjectSearcher mos = new ManagementObjectSearcher(); mos.Query = new SelectQuery("Win32_DiskDrive", "Index=0", new string[] { "PNPDeviceID", "SerialNumber", "Signature" }); ManagementObjectCollection myCollection = mos.Get(); ManagementObjectCollection.ManagementObjectEnumerator em = myCollection.GetEnumerator(); em.MoveNext(); ManagementBaseObject moo = em.Current; string sn = ""; string signature = ""; if (moo.Properties["SerialNumber"].Value != null) { sn = moo.Properties["SerialNumber"].Value.ToString().Trim(); } if (moo.Properties["Signature"].Value != null) { signature = moo.Properties["Signature"].Value.ToString().Trim(); if (signature.Equals("0")) { signature = ""; } } MacInfo += "|Disk:" + sn + "," + signature + "," + moo.Properties["PNPDeviceID"].Value.ToString().Trim(); return sn + signature; } /// /// 获取网卡硬件地址 /// /// private static string GetMoAddress() { string MoAddress = " "; using (ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration")) { ManagementObjectCollection moc2 = mc.GetInstances(); foreach (ManagementObject mo in moc2) { //if ((bool)mo["IPEnabled"] == true) MoAddress = mo["MacAddress"].ToString(); mo.Dispose(); } } return MoAddress.ToString(); } } }