未获取系统的实际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地址。所以这个隧道适配器是以太网适配器,并且已经启动,所以你必须将过滤范围缩小到你想要获得地址的接口。
因此,您还必须通过Name
或Id
进行筛选,或者您必须使用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();