没有获得系统的实际MAC地址

时间:2014-09-08 10:07:14

标签: c# asp.net mac-address

我正在使用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-00- E0,无法获得系统的实际MAC Address。能否请你帮我解决问题,并说明为什么会这样。

1 个答案:

答案 0 :(得分:1)

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

因此您必须按NameId进行过滤,否则您必须使用MAC地址列表并删除任何看似无效值的内容“00-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();