How to determine MAC Address of the actual physical network card — not virtual network interfaces created by VPN's (.NET C#)

前端 未结 5 1961
我在风中等你
我在风中等你 2020-12-01 07:00

Background

I\'m trying to get obtain a unique identifier out of a computer and want to be able to reliably return the same MAC address each time. Trust me I have

5条回答
  •  温柔的废话
    2020-12-01 07:14

     public static string GetMacAddressPhysicalNetworkInterface()
        {
    
            ManagementObjectSearcher searcher = new ManagementObjectSearcher
            ("Select MACAddress,PNPDeviceID FROM Win32_NetworkAdapter WHERE MACAddress IS NOT NULL AND" +
             " PNPDeviceID IS NOT NULL AND" +
             " PhysicalAdapter = true");
            ManagementObjectCollection mObject = searcher.Get();
    
            string macs = (from ManagementObject obj in mObject
                    let pnp = obj["PNPDeviceID"].ToString()
                    where !(pnp.Contains("ROOT\\"))
                    //where  pnp.Contains("PCI\\")  || pnp.Contains("USB\\")
                    select obj).Select(obj => obj["MACAddress"].ToString())
                .Aggregate(null, (mac, currentMac) => mac + currentMac.Replace(":", string.Empty) + ",");
    
            return !string.IsNullOrEmpty(macs) ? macs.Substring(0, macs.Length - 1) : macs;
        }
    
        public static NetworkInterface GetPhysicalNetworkInterface(string macAddressPhysicalNetworkInterface)
        {
            return NetworkInterface.GetAllNetworkInterfaces().FirstOrDefault(currentNetworkInterface => string.Equals(currentNetworkInterface.GetPhysicalAddress().ToString(), macAddressPhysicalNetworkInterface, StringComparison.CurrentCultureIgnoreCase));
        }
    

提交回复
热议问题