Ottieni un'interfaccia di rete attiva su Windows


6

Sto sviluppando un'applicazione che fornisce un'interfaccia utente per windump, lo sniffer di pacchetti. Windump ha un parametro "-D" che elenca tutte le interfacce di rete che può trovare, quindi puoi specificare su quale interfaccia ascoltare.

Tuttavia, vorrei evitare di forzare l'utente a configurare manualmente l'interfaccia su cui ascoltare. Su Unix, posso ottenere la giusta interfaccia di rete (en0, en1, ecc.) Tramite una chiamata ifconfige un po 'di analisi dell'output, ma non riesco a individuare alcuna API o comando Windows equivalente che possa fornire informazioni ipconfigsimili— non sembra ottenere questi dati.

Qualcuno può suggerire uno strumento da riga di comando di Windows o un'API che può essere chiamato tramite VBScript per ottenere questi dati in modo da non dover presentare all'utente una finestra di dialogo nella mia GUI che dice loro di selezionare l'interfaccia giusta?


1
Qual è l'interfaccia "giusta" in questo scenario?
Paul,

Risposte:


7

Questo comando fornirà un elenco di interfacce, con lo stato connesso o disconnesso:

c:\>netsh interface show interface

Admin State    State          Type             Interface Name
-------------------------------------------------------------------------
Enabled        Connected      Dedicated        Local Area Connection

3

puoi controllare ulteriori informazioni sulla connessione usando ipconfig /all. ci sono anche altre utilità disponibili come netshe netstatper altri scopi.

inserisci qui la descrizione dell'immagine

Se stai cercando una prospettiva di codifica, devi cercare un codice API di Windows da cui puoi creare la tua API che ti aiuti a ottenere informazioni sul sistema operativo Windows. Puoi usare Windows API o alcune API create in .net .. ecco maggiori informazioni su questi; se sei in grado di programmare per questo ..

ecco alcuni frammenti di codice per ottenere tutte le informazioni sulla rete .. controlla questi link. possono essere possono essere inclusi in vbscript. link1 link2 link3 link4

spero che questo ti aiuti ...



0

Non è necessario creare una nuova API. Utilizzare la classe WMI da VBScript.

http://msdn.microsoft.com/en-us/library/windows/desktop/aa394216(v=vs.85).aspx

Il modo migliore per farlo è di non enumerare prima le schede di rete. Piuttosto analizzare la tabella di routing. È lo stesso meccanismo utilizzato dal computer per decidere dove instradare i pacchetti verso Internet, che presumo sia il tuo obiettivo principale.

Un esempio

Set Host = "."  
Set WMI = GetObject("winmgmts:\\" & Host & "\root\CIMV2")
Set intIndex = WMI.ExecQuery("SELECT InterfaceIndex FROM Win32_IP4RouteTable WHERE Destination='0.0.0.0'")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE InterfaceIndex= " & intIndex) 

Ciò restituirà eventuali adattatori nella parte superiore della tabella di routing.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.