2

Я пытаюсь использовать 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 ответ1

2

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

В 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 - отображает адрес Media Access Control (MAC) и список сетевых протоколов, связанных с каждым адресом, для всех сетевых карт на каждом компьютере, локально или через сеть.
  • netsh - настройка сетевых интерфейсов, брандмауэра Windows, маршрутизации и удаленного доступа.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .