Настройки сетевого интерфейса во встроенной 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++ без необходимости разбора вывода из сторонней утилиты.