2013-03-04 2 views
1

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

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 и Выбирается является текущим ManagementObject из счетчику.

Я пытаюсь изменить текст метки (lblIP) на первый адрес Ip ​​в массиве. Но именно здесь генерируется исключение.

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

+0

Извините Soner Gönül, я обращу внимание на это в следующий раз;) – DerpyNerd

ответ

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 имеет значение NULL.

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

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

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

+0

Привет, извините, если я был не очень ясен. В моей программе у меня есть правильный адаптер в «ManagementObject» («choosen»). Это беспроводной сетевой адаптер Qualcomm, который я использую сейчас, чтобы получить доступ к Интернету. Вот почему странно, что массив пуст и что ip enabled is false – DerpyNerd

+0

@RobbieVercammen: Хорошо, я вижу. Включили ли вы IPX на своем сетевом адаптере (каково значение свойства IPXEnabled)? – Hans

+0

Спасибо, что помогли мне. IPX не включен ни на одном из моих адаптеров. – DerpyNerd