win32_networkaddressconfiguration没有IP地址
我收集所有networkadapterconfigurations从C#中的Win32_NetworkAdapterConfiguration
类。 我使用此查询:win32_networkaddressconfiguration没有IP地址
private String strDetailedInterfaces =
@"SELECT *
FROM Win32_NetworkAdapterConfiguration
WHERE DHCPEnabled = 'TRUE'";
但是,在选择,我用它来连接到互联网的networkadapter时,它说,IPEnabled = false
,当我打电话阵列IPAddresses
,我得到NullPointerException异常(这意味着数组=空值)。
我所说的地址是这样的:
ManagementObject choosen = (ManagementObject)eInterfacesConfig.Current;
String[] ipAddresses = (String[]) choosen["IPAddress"];
lblIP.Text = ipAddresses[0];
eInterfacesConfig
是ManagementObjectCollection.Enumerator
和 choosen是当前ManagementObject
出枚举。
我试图改变标签(lblIP)到阵列中的第一个IP地址的文本。但这是异常抛出的地方。
有人能解释为什么,也许指向我到正确的方向?
以下查询将返回我的Windows 8机器上有两个Win32_NetworkAdapterConfiguration
对象 :
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);
}
}
}
第一适配器配置是微软内核调试网络适配器。 该适配器用于远程内核调试。该适配器的DHCPEnabled
属性 是TRUE
。但是没有分配给此适配器的IP地址 。这就是为什么IPAddress
数组为null的原因。
第二适配器配置是我英特尔千兆网络适配器。有 是分配给适配器的两个IP地址。
另一个原因IPAddress
阵列可以为空是 例如断开无线网络适配器。
因此,为了解决您的NullReferenceException
你必须检查 IPAddress
数组无效(请参见上面的代码)。使用Description
属性来标识适配器配置。
你好,对不起,如果我不是很清楚。 在我的程序中,我确实在'ManagementObject'('choosen')中有正确的适配器。这是我现在用来访问互联网的高通无线网络适配器。 这就是为什么它是奇怪的是,数组为空并启用了IP是假 – DerpyNerd 2013-03-04 19:41:18
@RobbieVercammen:好的,我明白了。您是否在网络适配器上启用了IPX(IPXEnabled属性的值是什么)? – Hans 2013-03-04 20:02:31
谢谢你帮助我。在我的任何适配器上未启用IPX – DerpyNerd 2013-03-04 20:35:15
对不起Soner格尼尔,我会注意的是下一次;) – DerpyNerd 2013-03-04 19:07:27