6

Я разрабатываю приложение, которое предоставляет пользовательский интерфейс для windump, анализатор пакетов. Windump имеет параметр «-D», в котором перечислены все сетевые интерфейсы, которые он может найти, а затем вы можете указать, какой интерфейс прослушивать.

Однако я бы не хотел заставлять пользователя вручную настраивать интерфейс для прослушивания. В Unix я могу получить правильный сетевой интерфейс (en0, en1 и т.д.) С помощью вызова ifconfig и некоторого синтаксического анализа вывода, но я не могу найти какой-либо эквивалентный Windows API или команду, которая может дать похожую информацию - ipconfig не кажется, чтобы получить эти данные.

Может кто-нибудь предложить либо инструмент командной строки Windows, либо API, который можно вызвать через VBScript для получения этих данных, чтобы мне не приходилось предоставлять пользователю диалоговое окно в моем графическом интерфейсе, предлагающее выбрать правильный интерфейс?

4 ответа4

6

Эта команда предоставит список интерфейсов с подключенным или отключенным состоянием:

c:\>netsh interface show interface

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

Вы можете проверить больше информации о соединении, используя ipconfig /all . Есть и другие утилиты, такие как netsh и netstat для других целей.

Если вы ищете перспективу кодирования, то вам нужно найти код API для Windows, из которого вы можете создать свой собственный API, который поможет вам получить информацию об операционной системе Windows. Вы можете использовать Windows API или какой-либо созданный API в .net. вот больше информации об этом; если вы можете программировать для этого ..

Вот фрагмент кода, чтобы получить всю информацию о сети. Проверьте эти ссылки. возможно они могут быть включены в VBScript. link1 link2 link3 link4

надеюсь, это поможет вам ...

0

Похоже, это решает проблему:

http://shadowbq.blogspot.com/2006/06/windump-finding-pcap-device-mapping.html

Это сценарий VBS, который запрашивает активный сетевой интерфейс и преобразует его в формат, подходящий для передачи в качестве параметра windup.exe.

0

Вам не нужно создавать новый API. Используйте класс WMI из VBScript.

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

Безусловно, лучший способ сделать это - сначала не перечислять NIC. Скорее разбери таблицу маршрутизации. Это тот же механизм, который использует компьютер, чтобы решить, куда направлять пакеты в Интернет, что, я полагаю, является вашей главной целью.

Пример

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) 

Это вернет все адаптеры в верхней части таблицы маршрутизации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .