Имя сетевого адаптера Windows 7 с помощью winpcap

Имя сетевого адаптера Windows 7 с помощью winpcap

Я пытаюсь использовать winpcap для приложения, которое будет использоваться на нескольких серверах в производственной линии. Единственное, что меня раздражает до сих пор, это соглашение об именовании устройств Windows 7, которое представляет собой длинную шестнадцатеричную строку и меняется от сервера к серверу (т. е. \Device\NPF_{6F2E340D-FD43-4505-81C2-735716D02F15}(Linux упрощает это с помощью соглашения только eth0, eth1, ...). Поскольку каждый сервер будет использовать 5 сетевых адаптеров, я бы хотел избежать необходимости хранить файл конфигурации с именами устройств или не изменять исходный код для учета изменений имен устройств. Кроме того, подключение cat5 будет идти к разным устройствам в отдельных сетях, и назначения портов всегда должны оставаться одинаковыми для каждого чертежа.

Итак, мой вопрос: есть ли какой-то простой способ управлять этими именами устройств в Windows, например, иметь возможность легко переименовывать их как-то в реестре? Когда я посмотрел в реестр, шестнадцатеричная строка отображается во многих записях, а также появляется в именах папок, поэтому я не был уверен, станет ли это проблемой для изменения или нет. Или, возможно, есть ли способ с помощью winpcap получить понятное имя устройства, которое можно задать через страницу сетевых подключений, и получить таким образом шестнадцатеричное имя устройства (похоже на findalldev_ex()). Любые другие предложения также приветствуются.

PS: Я знаю, что могу использовать bind() для привязки к IP и портам или использовать winsock и т. д., но взаимодействие приложений и оборудования с другими устройствами осложняется тем, что нескольким сетевым адаптерам необходимо иметь один и тот же IP-адрес, а это приводит к конфликтам в Windows, поэтому опция winpcap в неразборчивом режиме создает все необработанные сообщения.

решение1

Как узнать «Имя подключения» сетевого подключения?

В Windows getmacможет использоваться для получения как «Имени подключения» (понятного имени), так и «Имени транспорта» (GUID).

getmac /fo csv /v

Пример вывода:

"Connection Name","Network Adapter","Physical Address","Transport Name"
"Local Area Connection","Realtek PCIe GBE Family Controller","F0-BF-97-62-95-5D","\Device\Tcpip_{45B9E87F-83FB-4829-A751-6B62656CC1A8}"
"Wireless Network Connection","Atheros AR9285 Wireless Network Adapter","CC-AF-78-B2-4C-09","\Device\Tcpip_{B108BB0B-CCDC-4ACA-9DFE-5A2F17BC138D}"
"Bluetooth Network Connection","Bluetooth Device (Personal Area Network)","CC-AF-78-B2-4C-0A","Media disconnected"

Как переименовать соединение?

netshможно использовать для переименования сетевого подключения.

netsh interface set interface name="Local Area Connection" newname="New Name"

Как все это автоматизировать?

Вы можете использовать приведенные выше команды в пакетном файле при установке продукта для автоматического создания пользовательского локального файла конфигурации.


Дальнейшее чтение

  • Индекс AZ командной строки Windows CMD- Отличный справочник по всем вопросам, связанным с командной строкой Windows.
  • getmac- Отображение адреса управления доступом к среде передачи данных (MAC) и списка сетевых протоколов, связанных с каждым адресом для всех сетевых карт на каждом компьютере, как локально, так и в сети.
  • нетш- Настройка сетевых интерфейсов, брандмауэра Windows, маршрутизации и удаленного доступа.

Связанный контент