我正在使用NetworkInterface.GetAllNetworkInterfaces()
来接收我的网络接口,
然后我尝试接受我的MAC地址(NetInterf[i].GetPhysicalAddress()
)
它需要我真实的界面和一些垃圾:
[0]: ""
[1]: "00E018998877"
[2]: "001F3C0B4F5D"
[3]: ""
[4]: "00000000000000E0"
[5]: "00000000000000E0"
[6]: "00000000000000E0"
[7]: "00000000000000E0"
[1]和[2]我真正的MAC地址,但其他错误, MAC地址必须有6个字节,不是吗?
在程序中我正在使用这样的条件进行过滤
if (NetInterf[i].GetPhysicalAddress().GetAddressBytes().Length == 6)
我做得对吗?因为我在MSDN中找不到任何关于它的信息。
答案 0 :(得分:3)
获得所有真实界面的更明确方法是使用 WMI 。您可以从Win32_NetworkAdapter
类中检索所有网络适配器信息。要确定适配器是物理适配器还是逻辑适配器,需要检查PhysicalAdapter
属性。这是一个例子:
var scope = new ManagementScope(@"\\localhost\root\cimv2");
scope.Connect();
var query = new ObjectQuery(@"SELECT * FROM Win32_NetworkAdapter WHERE PhysicalAdapter = True");
var searcher = new ManagementObjectSearcher(scope, query);
var networkInterfaces = searcher.Get();
foreach (var networkInterface in networkInterfaces)
{
Console.WriteLine(string.Format("{0} - {1}", networkInterface["MACAddress"], networkInterface["Name"]));
}
使用NetworkInterface.GetAllNetworkInterfaces()
无法确定无法确定。