C#获取计算机的MAC地址“离线”

10

在C#中,当没有网络连接时,是否有获取计算机MAC地址的方法?我可以在有网络连接时获取,但是离线时无法获取。但是我非常需要这个MAC地址来完成我的工作。

这是我在线上的代码;

var macAddr =
      (from nic in NetworkInterface.GetAllNetworkInterfaces()
       where nic.OperationalStatus == OperationalStatus.Up
       select nic.GetPhysicalAddress().ToString()).FirstOrDefault();

你能否只是删除 where nic.OperationalStatus == OperationalStatus.Up 这一行代码? - Pondidum
联网时,Mac地址为4CEB428D5072。离线时,Mac地址为4CEB428D5073。为什么? - Mehmet Ince
2个回答

26

从WMI:

public static string GetMACAddress1()
{
    ManagementObjectSearcher objMOS = new ManagementObjectSearcher("Select * FROM Win32_NetworkAdapterConfiguration");
    ManagementObjectCollection objMOC = objMOS.Get();
    string macAddress = String.Empty;
    foreach (ManagementObject objMO in objMOC)
    {
        object tempMacAddrObj = objMO["MacAddress"];

        if (tempMacAddrObj == null) //Skip objects without a MACAddress
        {
            continue;
        }
        if (macAddress == String.Empty) // only return MAC Address from first card that has a MAC Address
        {
            macAddress = tempMacAddrObj.ToString();              
        }
        objMO.Dispose();
    }
    macAddress = macAddress.Replace(":", "");
    return macAddress;
}

来自 System.Net 命名空间:

public static string GetMACAddress2()
{
    NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
    String sMacAddress = string.Empty;
    foreach (NetworkInterface adapter in nics)
    {
        if (sMacAddress == String.Empty)// only return MAC Address from first card  
        {
            //IPInterfaceProperties properties = adapter.GetIPProperties(); Line is not required
            sMacAddress = adapter.GetPhysicalAddress().ToString();
        }
    } return sMacAddress;
}

C# Corner - 如何使用Asp.Net C#获取系统MAC地址 稍作修改。


这行代码 IPInterfaceProperties properties = adapter.GetIPProperties(); 是必需的吗? - Joel
@Joel 这行代码在我本地测试中是不需要的。已更新回答以反映我的测试结果。 - jordanhill123

4

为什么在我们的网络断开连接时,它显示不同的MAC地址?有任何想法吗? - Muhammad Faizan Khan
当我们的网络断开连接时,0C1320524153 MAC地址会显示出来。 - Muhammad Faizan Khan
如果是无线网络适配器,那么它会显示每个连接的不同无线网络的不同MAC地址。 - PhonicUK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接