Win32_networkaddressconfiguration没有IP地址
本文关键字:IP 地址 没有 networkaddressconfiguration Win32 | 更新日期: 2023-09-27 18:02:04
我正在收集c#中Win32_NetworkAdapterConfiguration
类的所有网络适配器配置。我使用这个查询:
private String strDetailedInterfaces =
@"SELECT *
FROM Win32_NetworkAdapterConfiguration
WHERE DHCPEnabled = 'TRUE'";
然而,当选择我用来连接到互联网的网络适配器时,它说IPEnabled = false
,当我用IPAddresses
调用数组时,我得到nullpointerexception(意味着数组= null)。
我这样调用地址:
ManagementObject choosen = (ManagementObject)eInterfacesConfig.Current;
String[] ipAddresses = (String[]) choosen["IPAddress"];
lblIP.Text = ipAddresses[0];
eInterfacesConfig
是ManagementObjectCollection.Enumerator
和
ManagementObject
的枚举数。我尝试将标签(lblIP)的文本更改为数组中的第一个Ip地址。但这就是异常抛出的地方。
有人能解释一下为什么,或者给我指出正确的方向吗?
下面的查询返回两个Win32_NetworkAdapterConfiguration
对象在我的Windows 8机器上:
ManagementObjectSearcher query =
new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE DHCPEnabled ='TRUE'");
ManagementObjectCollection queryCollection = query.Get();
queryCollection = query.Get();
foreach (ManagementObject currentConfig in queryCollection)
{
string[] addresses = (string[])currentConfig["IPAddress"];
Console.Out.WriteLine(currentConfig["Description"]);
if (addresses != null)
{
foreach (var addr in addresses)
{
Console.Out.WriteLine(addr);
}
}
}
第一个适配器配置是针对Microsoft Kernel Debug Network adapter 的。此适配器用于远程内核调试。DHCPEnabled
属性这个适配器是TRUE
。但是没有IP地址分配给这个适配器。这就是为什么IPAddress
数组为空的原因。
第二个适配器配置是用于我的英特尔千兆网络适配器。在那里是分配给适配器的两个IP地址。
IPAddress
数组可能为空的另一个原因是例如一个断开的无线网卡。
所以,为了解决你的NullReferenceException
,你必须检查IPAddress
数组为null(请参阅上面的代码)。使用Description
属性来标识适配器配置。