我正在使用 NetworkInterface.GetAllNetworkInterfaces()
获取我的网络接口(interface),
然后我尝试获取我的 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 中找不到任何相关信息。
最佳答案
获得所有真实接口(interface)的更清晰的方法是使用WMI。您可以从 Win32_NetworkAdapter
检索所有网络适配器信息类(class)。要确定适配器是物理适配器还是逻辑适配器,需要检查 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()
您无法确定。
关于c# - GetAllNetworkInterfaces 需要一些垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6503170/