Estoy intentando utilizar winpcap para una aplicación que se utilizará en varios servidores en una línea de producción. Una cosa que me molesta hasta ahora es la convención de nomenclatura de dispositivos de Windows 7, que es una cadena hexadecimal larga y cambia de un servidor a otro (es decir, \Device\NPF_{6F2E340D-FD43-4505-81C2-735716D02F15}
(Linux hace esto más fácil solo con la convención eth0, eth1,...). Estaré usando 5 adaptadores de red, me gustaría evitar tener que mantener un archivo de configuración con los nombres de los dispositivos o evitar cambiar el código fuente para acomodar los cambios de nombre del dispositivo. Además, la conexión cat5 irá a diferentes dispositivos. en redes separadas y las asignaciones de puertos siempre deben ser las mismas según el dibujo.
Entonces mi pregunta es, ¿existe alguna manera fácil de administrar estos nombres de dispositivos en Windows, como poder cambiarles fácilmente el nombre de alguna manera en el registro? Cuando miré en el registro, la cadena hexadecimal se muestra en muchas entradas y también aparece en los nombres de las carpetas, por lo que no estaba seguro de si cambiar eso sería una molestia o no. O tal vez, ¿hay alguna manera con winpcap de obtener el nombre descriptivo de un dispositivo que se puede configurar a través de la página de conexiones de red y obtener el resultado del nombre del dispositivo hexadecimal de esa manera (similar a findalldev_ex()). Cualquier otra sugerencia también es bienvenida.
PD: sé que puedo usar bind() para vincular IP y puertos o usar winsock, etc., pero la interfaz de la aplicación y el hardware con otros dispositivos es complicada debido a que varios adaptadores de red deben tener la misma dirección IP y eso entra en conflicto en Windows. de ahí la opción winpcap en modo promiscuo que crea todos los mensajes sin procesar.
Respuesta1
¿Cómo obtengo el "Nombre de conexión" de una conexión de red?
En Windows getmac
se puede utilizar para recuperar tanto el "Nombre de conexión" (nombre descriptivo) como el "Nombre de transporte" (GUID).
getmac /fo csv /v
Salida de ejemplo:
"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"
¿Cómo cambio el nombre de una conexión?
netsh
se puede utilizar para cambiar el nombre de una conexión de red.
netsh interface set interface name="Local Area Connection" newname="New Name"
¿Cómo puedo automatizar todo esto?
Puede utilizar los comandos anteriores en un archivo por lotes al instalar su producto para crear automáticamente un archivo de configuración local personalizado.
Otras lecturas
- Un índice AZ de la línea de comando CMD de Windows- Una excelente referencia para todo lo relacionado con la línea cmd de Windows.
- getmac- Muestra la dirección de Control de acceso a medios (MAC) y la lista de protocolos de red asociados con cada dirección para todas las tarjetas de red en cada computadora, ya sea localmente o a través de una red.
- netsh- Configurar interfaces de red, Firewall de Windows, enrutamiento y acceso remoto.