win32_networkaddressconfiguration без IP-адреса

Я собираю все конфигурации сетевых адаптеров из Win32_NetworkAdapterConfiguration класс в C#. Я использую этот запрос:

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-адрес в массиве. Но это то, куда бросает исключение.

Может кто-нибудь объяснить, почему и, возможно, указать мне правильное направление?

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 Kernel Debug. Этот адаптер используется для удаленной отладки ядра. DHCPEnabled свойство этого адаптера TRUE, Однако этому адаптеру не назначены IP-адреса. Это причина, почему IPAddress массив равен нулю.

Вторая конфигурация адаптера предназначена для моего сетевого адаптера Intel Gigabit. Адаптеру назначены два IP-адреса.

Еще одна причина, почему IPAddress массив может быть нулевым, например, это отключенный адаптер беспроводной сети.

Итак, чтобы решить ваш NullReferenceException Вы должны проверитьIPAddress массив для нуля (см. код выше). Использовать Descriptionсвойство для определения конфигурации адаптера.

Другие вопросы по тегам