如何找到“IPEnabled”的NetworkInterface的MAC地址?

时间:2011-10-25 21:38:03

标签: c# .net

我正在重构一些旧代码,并希望确保我理解以前的逻辑。

以下是原始代码:

ManagementClass myManagementClass = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = myManagementClass.GetInstances();
foreach (ManagementObject obj in moc)
{
    if (MACAddress == string.Empty)
    {
        if ((bool)obj["IPEnabled"] == true)
        {
            MACAddress = obj["MacAddress"].ToString();
            //dispose of our object
            obj.Dispose();
            break;
        }
    }
}

以下是Win32_NetworkAdapterConfiguration类的文档。

我想使用this question中描述的NetworkInterface类。

“IPEnabled”的语义是什么,它与OperationalStatus.Up相同?如果没有,有没有办法使用NetworkInterface(或其他一些)类查询“IPEnabled”属性?

这些示例中的大多数都返回它找到的第一个网络接口。可能有不止一个“向上”或者总是只有一个吗?

1 个答案:

答案 0 :(得分:1)

它们不一样。

您想要的是扫描每个入口并查看它是否支持IPv4或IPv6:

For Each tInterface As NetworkInterface in NetworkInterface.GetAllNetworkInterfaces()
  If (tInterface.Supports(NetworkInterfaceComponent.IPv4)) Or (tInterface.Supports(NetworkInterfaceComponent.IPv6)) Then
    '
    '  Do something with tInterface.GetPhysicalAddress()
    '
  End If
Next