win32_networkaddressconfiguration没有IP地址

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]; 

eInterfacesConfigManagementObjectCollection.Enumerator和 choosen是当前ManagementObject出枚举。

我试图改变标签(lblIP)到阵列中的第一个IP地址的文本。但这是异常抛出的地方。

有人能解释为什么,也许指向我到正确的方向?

+0

对不起Soner格尼尔,我会注意的是下一次;) – DerpyNerd 2013-03-04 19:07:27

以下查询将返回我的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 属性来标识适配器配置。

+0

你好,对不起,如果我不是很清楚。 在我的程序中,我确实在'ManagementObject'('choosen')中有正确的适配器。这是我现在用来访问互联网的高通无线网络适配器。 这就是为什么它是奇怪的是,数组为空并启用了IP是假 – DerpyNerd 2013-03-04 19:41:18

+0

@RobbieVercammen:好的,我明白了。您是否在网络适配器上启用了IPX(IPXEnabled属性的值是什么)? – Hans 2013-03-04 20:02:31

+0

谢谢你帮助我。在我的任何适配器上未启用IPX – DerpyNerd 2013-03-04 20:35:15