未获取系统的实际MAC地址

本文关键字:MAC 地址 获取 系统 | 更新日期: 2023-09-27 18:20:58

我正在使用NetworkInterface类来获取系统的MAC Address,这是代码

foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
        {
            // Only consider Ethernet network interfaces, thereby ignoring any
            // loopback devices etc.
            if (nic.NetworkInterfaceType == NetworkInterfaceType.Ethernet &&
                nic.OperationalStatus == OperationalStatus.Up)
                macAddresses += nic.GetPhysicalAddress().ToString();
        }

在我的系统上,我得到了我的系统的MAC Address,但在其他系统上我得到了隧道适配器的物理地址00-00-00-00-00-00-E0,无法得到系统的实际MAC Address。你能不能帮我弄清楚这个问题,并说明为什么会发生这种情况。

未获取系统的实际MAC地址

你可以看到系统可以有多个MAC地址,所以你不会得到你的系统MAC地址。您可以获取某个接口的MAC地址。所以这个隧道适配器是以太网适配器,并且已经启动,所以你必须将过滤范围缩小到你想要获得地址的接口。

因此,您还必须通过NameId进行筛选,或者您必须使用MAC地址列表并删除任何看起来无效的值"00-00-00-00-00-00-E0"。

不是按名称或id的mac地址,而是网络接口:http://msdn.microsoft.com/en-us/library/system.net.networkinformation.networkinterface(v=vs.110).aspx

有一个称为Name的字段和一个名为Id的字段,所以:

if (nic.NetworkInterfaceType == NetworkInterfaceType.Ethernet &&
                nic.OperationalStatus == OperationalStatus.Up && !nic.Name.Contains("Tunnel"))
                macAddresses += nic.GetPhysicalAddress().ToString();