Баг в WMI?
А точнее в методе
EnableDHCP класса
Win32_NetworkAdapterConfigurationРешаю задачу - написать программу, которая модифицировала бы свойства протокола IPv4 сетевого адаптера. В частности, необходимо, в некоторых случаях включать автоматическое получение IP-адреса.
Для решения задачи использую следующий код:
public static int EnableDHCP(string stMAC)
{
//создаем новый Management Class для управления конфигурациями сетевых адаптеров
ManagementClass AdaptersMan = new ManagementClass("Win32_NetworkAdapterConfiguration");
//Получаем коллекцию объектов Management Object - все сетевые карты компа в данном случае
ManagementObjectCollection AdaptersCollect = AdaptersMan.GetInstances();
foreach (ManagementObject mAdapter in AdaptersCollect) //перебираем все адаптеры в коллекции
{
if ((string)mAdapter["MACAddress"] == stMAC) //Нашли адаптер с нужным MAC'ом
{
try
{
ManagementBaseObject retManObj; //сюда будет возвращено значение InvokeMethod
ManagementBaseObject methodParameters = mAdapter.GetMethodParameters("EnableDHCP"); //А это объект для хранения параметров метода
//в данном случае их нет и дальше ничего не делаем
//сразу вызываем метод
retManObj = mAdapter.InvokeMethod("EnableDHCP", methodParameters, null);
return Convert.ToInt32(retManObj["returnValue"]);
}
catch
{
return -2; //произошла ошибка
}
}
}
return -1; //Не нашли адаптер с нужным MAC
}
Если сетевой кабель подключен, то все работает корректно, однако, при отключенном сетевом кабеле метод
EnableDHCP возвращает ошибку 94, а в свойствах адаптера образуется следующий пиздец:
Этот баг был справедливо замечен одним из комментаторов и в соответствующей
статье на MSDN. Так вот вопрос - что это? Неужто баг WMI? И можно ли его как-то побороть, или придется искать другие способы изменения параметров адаптера (не через WMI)