Как узнатб список сетевых адаптеров из реестра? Teamed NICs?
От: Timas  
Дата: 03.08.05 06:15
Оценка:
Доброго времени суток.

В процессе работы столкнулся со следующей пробоемой. Программе требуется извлечь из реестра список сетевых интерфейсов и их настройки TCP/IP.

Изначально система вытаскивала этот список из HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards, а затем лезла за настройками TCP/IP в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces.
К сожадению этот метод не корректно работает в случае если в системе установлено несколько интерфейсов объединённых в teamed NIC, по причине того, что последнего не оказалось в ...\NetworkCards.

Другой вариант, воспользоваться ключом реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}. Там лежит описание драйверов и ссылки на их настройки. Сетевые адаптеры можно отличить по полю Characteristic. Сам я ещё не тестировал этот подход, но к его недостаткам можно отнести отсутствие (у меня) спецификации по значениям поля Characteristic. Если оно зависит от драйвера, то неизбежны проблемы.

Подскажите пожалуйста, другие варианты решить мою проблему или может кто-то подробнее знаком с этими двумя. Отдельно буду благодарен если кто-нибудь даст спецификацию значений в ключе {4D36E972-E325-11CE-BFC1-08002BE10318} и любой информации о том как хранятся в реестре данные о Teamed NICs. Есть ли какой-нибудь стандарт или всё зависит от драйвера.

Всем спасибо.
Re: Как узнатб список сетевых адаптеров из реестра? Teamed N
От: butcher Россия http://bu7cher.blogspot.com
Дата: 03.08.05 07:18
Оценка:
Здравствуйте, Timas, Вы писали:

T>В процессе работы столкнулся со следующей пробоемой. Программе требуется извлечь из реестра список сетевых интерфейсов и их настройки TCP/IP.


Может воспользоваться IP Helper Functions?

Нет ничего невозможного..
Re[2]: Как узнатб список сетевых адаптеров из реестра? Teame
От: Timas  
Дата: 03.08.05 07:54
Оценка:
Здравствуйте, butcher, Вы писали:

B>Может воспользоваться IP Helper Functions?


Нет необходимо достать именно из реестра. Ситуация примерно такая: реестр в некотором виде лежит сохранённый на диске и есть возможность достать любой его ключ. Таким образом API функции не подходят.
Re[3]: Как узнатб список сетевых адаптеров из реестра? Teame
От: butcher Россия http://bu7cher.blogspot.com
Дата: 03.08.05 07:59
Оценка:
Здравствуйте, Timas, Вы писали:

T>Нет необходимо достать именно из реестра. Ситуация примерно такая: реестр в некотором виде лежит сохранённый на диске и есть возможность достать любой его ключ. Таким образом API функции не подходят.


Можно попробовать каким-нибудь RegMon'ом понаблюдать, что происходит когда такой вызов проводится.

Нет ничего невозможного..
Re: Как узнатб список сетевых адаптеров из реестра? Teamed N
От: Timas  
Дата: 03.08.05 07:59
Оценка:
T>Другой вариант, воспользоваться ключом реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}. Там лежит описание драйверов и ссылки на их настройки. Сетевые адаптеры можно отличить по полю Characteristic. Сам я ещё не тестировал этот подход, но к его недостаткам можно отнести отсутствие (у меня) спецификации по значениям поля Characteristic. Если оно зависит от драйвера, то неизбежны проблемы.

Как выяснилось микросовтовская утилита msinfo32.exe показывает информацию в ветке Components\Network\Adapter как раз из ключа реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}. Но она выводет сюда всё, что там лежит.

Может кто-нибуть знает как оттуда выбрать Ethernet карточки и Teamed NIC виртуальные драйвера?
Re[4]: Как узнатб список сетевых адаптеров из реестра? Teame
От: Timas  
Дата: 04.08.05 09:01
Оценка:
Здравствуйте, butcher, Вы писали:

B>Можно попробовать каким-нибудь RegMon'ом понаблюдать, что происходит когда такой вызов проводится.


Посмотрел регмоном что происходит с реестром когда происходит вызов функции GetAdaptersInfo из Ip Helper'а. Она сразу лезет к настройкам TCP/IP интерфейсов. Их guid'ы она похоже берёт не из реестра. Поправьте меня если я ошибаюсь.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.