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
свойство для определения конфигурации адаптера.