我正在使用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
。能否请你帮我解决问题,并说明为什么会这样。
答案 0 :(得分:1)
您可以看到系统可以有多个MAC地址,因此您将无法获得系统MAC地址。您可以获取某些接口的MAC地址。因此,这个隧道适配器是以太网适配器,并且已启动,因此您必须将过滤范围缩小到要获取地址的接口。
因此您必须按Name
或Id
进行过滤,否则您必须使用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();