Vom Code Ich möchte einen Windows-Computer zwingen, einen bestimmten Netzwerkadapter für alle Verbindungen zu einer bestimmten IP-Adresse zu verwenden.
Ich plane dies mit dem Befehlszeilentool ROUTE ADD, aber dies setzt voraus, dass ich die Indexnummer des Netzwerkadapters im Voraus weiß (wie sie dem Befehl ROUTE ADD mitgeteilt werden muss). .
FRAGE: Wie kann ich den Index eines Netzwerkadapters programmatisch abrufen, wenn ich seinen Namen kenne?
Ich bin mir bewusst, dass ROUTE PRINT zeigt mir die Informationen, die ich brauche (die Indexnummern aller Netzwerkadapter vorhanden), aber es muss eine Möglichkeit geben, diese Informationen auch programmgesteuert (C #) zu bekommen?
Beachten Sie, dass ich die Textausgabe von ROUTE PRINT nicht gerne analysiere, da sich das Textformat bei verschiedenen Windows-Versionen ändern kann.
Sie können den Schnittstellenindex Ihres Netzwerkadapters abrufen
mit den Klassen .Net NetworkInterface
(und verwandten).
Hier ist ein Codebeispiel:
%Vor%Rufen Sie diese Funktion dann mit dem Namen Ihres Netzwerkadapters auf:
%Vor% Sie können auch den InterfaceIndex Ihres Netzwerkadapters erhalten
Verwenden Sie die Win32_NetworkAdapter
WMI-Klasse. Die Klasse Win32_NetworkAdapter
enthält eine Eigenschaft namens InterfaceIndex.
So, um den InterfaceIndex für einen Netzwerkadapter mit einem gegebenen zu erhalten Verwenden Sie den folgenden Code:
%Vor% Wenn Sie WMI nicht verwenden möchten, können Sie auch die Win32-API-Funktion verwenden
GetAdaptersInfo in Kombination mit IP_ADAPTER_INFO
Struktur.
Sie finden hier ein Beispiel pinvoke.net .
Tags und Links c# windows routing networking