【问题标题】:win32_networkaddressconfiguration no ip addresswin32_networkaddressconfiguration 没有ip地址
【发布时间】:2013-03-04 18:50:09
【问题描述】:

我正在从 C# 中的 Win32_NetworkAdapterConfiguration 类中收集所有网络适配器配置。 我使用这个查询:

private String strDetailedInterfaces =
                       @"SELECT * 
                       FROM   Win32_NetworkAdapterConfiguration
                       WHERE  DHCPEnabled = 'TRUE'";
但是,在选择我用来连接到互联网的NetworkAdapter时,它说IPEnabled = false和当我用IPAddresses 987654324 @时,我得到了nullpointerexception(意味着array = null)。 p >

我这样称呼地址:

ManagementObject choosen = (ManagementObject)eInterfacesConfig.Current;
String[] ipAddresses = (String[]) choosen["IPAddress"];
lblIP.Text = ipAddresses[0];

eInterfacesConfigManagementObjectCollection.Enumerator 和 选择的是枚举器中的当前ManagementObject

我尝试将标签 (lblIP) 的文本更改为数组中的第一个 IP 地址。但这就是引发异常的地方。

有人能解释一下原因,或许还能为我指明正确的方向吗?

【问题讨论】:

  • Sorry Soner Gönül,下次我会注意的;)

标签: c# networking ip wmi system.management


【解决方案1】:

以下查询返回两个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 内核调试网络适配器。 该适配器用于远程内核调试。 DHCPEnabled 属性 这个适配器是TRUE。但是没有IP地址 分配给这个适配器。这就是IPAddress 数组为空的原因。

第二个适配器配置用于我的英特尔千兆网络适配器。那里 是分配给适配器的两个 IP 地址。

IPAddress 数组可能为空的另一个原因是 例如断开的无线网络适配器

所以,为了解决您的NullReferenceException,您必须检查 IPAddress 数组为空(请参阅上面的代码)。使用Description 属性来识别适配器配置。

【讨论】:

  • 嗨,如果我不是很清楚,抱歉。在我的程序中,我确实在“ManagementObject”(“选择”)中有正确的适配器。这是我现在用来访问互联网的 Qualcomm 无线网络适配器。所以奇怪的是数组是空的,ip enabled 是假的
  • @RobbieVercammen:好的,我明白了。您是否在网络适配器上启用了 IPX(IPXEnabled 属性的值是什么)?
  • 感谢您帮助我。我的任何适配器上都没有启用 IPX
  • @RobbieVercammen:如果您右键单击您的网络适配器(网络共享中心),是否启用了 IPv4 和/或 IPv6 协议?您的计算机有多少个网络适配器?
  • 我忘记了...我的无线适配器包含在虚拟机网桥中!你知道我应该怎么做吗,我不想解开。
猜你喜欢
  • 2021-04-12
  • 2013-07-21
  • 2022-08-14
  • 2020-05-23
  • 1970-01-01
  • 2015-06-19
  • 1970-01-01
  • 1970-01-01
  • 2015-05-14
相关资源
最近更新 更多