Wie bekomme ich den Netzwerkadapter-Index?

8

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.

    
Martin Christiansen 21.06.2012, 18:57
quelle

2 Antworten

7

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 .

    
Hans 21.06.2012, 20:17
quelle
0

Haben Sie die system.net.networkinformationsschnittstelle von C # untersucht?

Ссылка

Ich bin nicht vertraut mit ROUTE ADD, aber Sie können theoretisch Informationen von einem mit dem anderen verheiraten.

    
Phil 21.06.2012 19:12
quelle

Tags und Links