using System; using System.Collections.Generic; using System.Linq; using System.Management; using System.Net.NetworkInformation; using System.Text; using System.Threading.Tasks; namespace CnasSynchronousCommon { public class MachieCodeHelper { public static string GetMachineCode() { StringBuilder machineCode = new StringBuilder(); // 获取CPU ID string cpuId = GetCPUId(); machineCode.Append(cpuId); // 获取所有MAC地址 List macAddresses = GetMACAddresses(); foreach (string mac in macAddresses) { machineCode.Append("_").Append(mac); } return machineCode.ToString(); } private static string GetCPUId() { try { using (ManagementClass mc = new ManagementClass("Win32_Processor")) { ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { return mo.Properties["ProcessorId"].Value.ToString(); } } } catch (Exception ex) { throw new Exception("获取CPU ID失败: " + ex.Message); } return string.Empty; } private static List GetMACAddresses() { List macAddresses = new List(); try { NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); // 优先选择以太网卡 var ethernetAdapter = nics.FirstOrDefault(adapter => adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet && !string.IsNullOrEmpty(adapter.GetPhysicalAddress().ToString())); // 如果没有以太网卡,则选择无线网卡 var selectedAdapter = ethernetAdapter ?? nics.FirstOrDefault(adapter => adapter.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 && !string.IsNullOrEmpty(adapter.GetPhysicalAddress().ToString())); if (selectedAdapter != null) { string mac = selectedAdapter.GetPhysicalAddress().ToString(); if (!string.IsNullOrEmpty(mac)) { macAddresses.Add(mac); } } } catch (Exception ex) { throw new Exception("获取MAC地址失败: " + ex.Message); } return macAddresses; } } }