Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Толик Панков ([info]hex_laden) в [info]csharp_dotnet
@ 2013-04-09 12:02:00

Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Баг в 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)


(Читать комментарии)

Добавить комментарий:

Как:
(комментарий будет скрыт)
имя пользователя:    
Вы должны предварительно войти в LiveJournal.com
 
E-mail для ответов: 
Вы сможете оставлять комментарии, даже если не введете e-mail.
Но вы не сможете получать уведомления об ответах на ваши комментарии!
Внимание: на указанный адрес будет выслано подтверждение.
Тема:
Сообщение: