Windows 7-Netzwerkadapter-Gerätename mit Winpcap

8777
Pita

Ich versuche, winpcap für eine Anwendung zu verwenden, die auf mehreren Servern in einer Produktionslinie verwendet werden soll. Was mich bisher \Device\NPF_stört, ist die Windows 7-Benennungskonvention für Geräte, bei der es sich um einen langen Hex-String handelt, der von Server zu Server wechselt (dh (Linux macht dies einfacher, nur durch die Konventionen eth0, eth1, ...). Da jeder Server Ich werde mit 5 Netzwerkadaptern arbeiten, ich möchte nicht, dass ich eine Konfigurationsdatei mit den Gerätenamen behalten oder den Quellcode ändern muss, um die Änderungen an den Gerätenamen zu berücksichtigen. Außerdem wird der Anschluss der cat5 an verschiedene Geräte gesendet In separaten Netzwerken sollten die Portzuweisungen pro Zeichnung immer gleich bleiben.

Meine Frage ist also: Gibt es eine einfache Möglichkeit, diese Gerätenamen unter Windows zu verwalten, z. B. sie in der Registrierung irgendwie umbenennen zu können? Wenn ich in der Registry nachgesehen habe, wird der Hex-String in vielen Einträgen angezeigt und auch in Ordnernamen angezeigt. Daher war ich mir nicht sicher, ob sich dies ändern würde oder nicht. Oder vielleicht gibt es mit winpcap eine Möglichkeit, den Anzeigenamen eines Geräts zu ermitteln, das über die Netzwerkverbindungsseite festgelegt werden kann, und auf diese Weise das Ergebnis des Hex-Gerätenamens zu erhalten (ähnlich wie bei findalldev_ex ()). Alle anderen Vorschläge sind ebenfalls willkommen.

PS: Ich weiß, dass ich bind () verwenden kann, um an IP und Ports zu binden oder Winsock usw. zu verwenden, aber das Anschließen von Anwendungen und Hardware an andere Geräte ist kompliziert, da mehrere Netzwerkadapter dieselbe IP-Adresse haben müssen und Konflikte in Windows auftreten. Daher die Option winpcap im Promiscuous-Modus, um alle unformatierten Nachrichten zu erstellen.

2
Beachten Sie, dass dies eine GUID ist, nicht einfach eine Zeichenfolge, und die meisten Programmierer würden sie als abstrakten Datentyp mit höherer Ebene behandeln. Das heißt, sie werden analysiert und erwarten, dass sie aus hexadezimalen Zeichen mit Bindestrichen an bestimmten Stellen bestehen wahrscheinlich brechen, wenn Sie es in etwas wie "NIC1" ändern würden. Zweitens sollten diese Namen nicht vom Benutzer lesbar sein. Das Windows-Analog für / dev / eth0 lautet "Local Area Connection X". Linux verwendet für die Gerätezuordnung einen eigenen, nicht-Benutzernamen, der die PCI-Busadresse der Geräte angibt. Hatten Sie jemals eth0 und eth1, die Sie beim Neustart einfach austauschen? Ich habe. Frank Thomas vor 9 Jahren 0
Derzeit kann ich die GUID aus dem Aufruf von pcap_findalldevs_ex extrahieren, analysieren und als const char * für den Gerätenamen verwenden. Das ist kein Problem. Was die Änderung von eth0 und eth1 durch Linux angeht, so bin ich diesem Problem noch nicht begegnet. Mehrere Server wurden bereits vor einigen Jahren im Feld eingesetzt. Vielen Dank, dass Sie mich auf dieses potenzielle Problem aufmerksam gemacht haben. Diese eth0-Konvention machte die Linux-basierte Bereitstellung jedoch zu einer Leichtigkeit, aber jetzt portieren wir Dinge in eine Windows-Umgebung, und hier wird die GUID schwieriger. Pita vor 9 Jahren 0

1 Antwort auf die Frage

2
DavidPostill

Wie erhalte ich den "Verbindungsnamen" einer Netzwerkverbindung?

Unter Windows getmackönnen sowohl der "Verbindungsname" (Anzeigename) als auch der "Transportname" (GUID) abgerufen werden.

getmac /fo csv /v 

Beispielausgabe:

"Connection Name","Network Adapter","Physical Address","Transport Name" "Local Area Connection","Realtek PCIe GBE Family Controller","F0-BF-97-62-95-5D","\Device\Tcpip_" "Wireless Network Connection","Atheros AR9285 Wireless Network Adapter","CC-AF-78-B2-4C-09","\Device\Tcpip_" "Bluetooth Network Connection","Bluetooth Device (Personal Area Network)","CC-AF-78-B2-4C-0A","Media disconnected" 

Wie benenne ich eine Verbindung um?

netsh kann zum Umbenennen einer Netzwerkverbindung verwendet werden.

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

Wie kann ich das alles automatisieren?

Sie können die obigen Befehle in einer Batchdatei verwenden, wenn Sie Ihr Produkt installieren, um automatisch eine benutzerdefinierte lokale Konfigurationsdatei zu erstellen.


Lesen Sie weiter

  • Ein AZ-Index der Windows-CMD-Befehlszeile - Eine hervorragende Referenz für alles, was mit Windows-Cmd-Zeilen in Verbindung steht.
  • getmac - Zeigt die MAC-Adresse (Media Access Control) und die Liste der mit jeder Adresse verknüpften Netzwerkprotokolle für alle Netzwerkkarten in jedem Computer an, entweder lokal oder über ein Netzwerk.
  • netsh - Konfigurieren Sie Netzwerkschnittstellen, Windows-Firewall, Routing und Remote-Zugriff.
Ich werde mich um diese kümmern. Danke für die Tipps! Pita vor 9 Jahren 0