Настройки сетевого интерфейса во встроенной Windows XP

Как мы можем получить имя сетевого интерфейса (то есть, которое появляется в диалоговом окне "Сетевые подключения") с учетом описания устройства (то есть строка, которая появляется в текстовом поле "Свойства устройства -> Подключиться с помощью:")?

Мы должны сделать это на чистом языке C/C++ или с помощью некоторых стандартных инструментов командной строки (например, netsh, ipconfig...) или их комбинации.

Мы не можем использовать.NET API из-за проблем с развертыванием (приложение должно работать на XP, встроенной без.NET Framework).

API SDK GetIfTable и GetIfEntry кажутся многообещающими, но в нашей системе все поля MIB_IFROW заполнены правильно, кроме поля "wszName", которое остается неинициализированным.

3 ответа

Я смог сделать это через реестр. Используя GetAdaptersInfo(), который дает вывод IP_ADAPTER_INFO, возьмите строку AdapterName. Это должен быть GUID для адаптера. Для (по крайней мере, ipv4) в разделе HKLM \ SYSTEM \ CurrentControlSet \ Control \ Network {4D36E972-E325-11CE-BFC1-08002BE10318} \ {INSERT GUID HERE} \ Connection значение Name должно содержать "дружественное" сетевое имя.

Мне придется перепроверить, но я думаю, что это может быть где-то в реестре... Я вернусь к этому.

HKLM / система / CurrentControlSet / управления / Сеть

может помочь.

Я не нашел точно, что я думал, что, хотя, извините

РЕДАКТИРОВАТЬ Это также может помочь:

http://www.java2s.com/Tutorial/CSharp/0520__Windows/Getthenetworkdevicenamedeviceservicename.htm

в частности: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\

Я не знаю, гарантировано ли это для будущего или нет "одобренного" метода, но, похоже, он содержит информацию, которая вам нужна.

Лучше всего использовать вызовы Win32 API, известные под общим названием " IP Helper". Это даст вам почти всю ту же информацию, которую вы могли бы получить с помощью вызова "ipconfig" из CLI.

В частности, я бы начал с рассмотрения функции " GetAdaptersInfo".

И, конечно же, начиная с этой части Win32 API, вы можете использовать чистый C/C++ без необходимости разбора вывода из сторонней утилиты.

Другие вопросы по тегам