我正在重构一些旧代码,并希望确保我理解以前的逻辑。
以下是原始代码:
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”属性?
这些示例中的大多数都返回它找到的第一个网络接口。可能有不止一个“向上”或者总是只有一个吗?
答案 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