【发布时间】:2009-03-18 10:26:14
【问题描述】:
如何判断通过 Win32 GetAdaptersInfo() 或 GetAdaptersAddresses() 函数检索到的给定网络适配器是否是可移动的,例如 USB、SmartCard 等?
这些功能的文档似乎没有包含任何获取该信息的方法,所以我假设我必须去向 Windows 询问我找到的每个设备是否可以以某种方式移动。
你有什么建议?
【问题讨论】:
标签: windows winapi networking
如何判断通过 Win32 GetAdaptersInfo() 或 GetAdaptersAddresses() 函数检索到的给定网络适配器是否是可移动的,例如 USB、SmartCard 等?
这些功能的文档似乎没有包含任何获取该信息的方法,所以我假设我必须去向 Windows 询问我找到的每个设备是否可以以某种方式移动。
你有什么建议?
【问题讨论】:
标签: windows winapi networking
如果您考虑一下,那么 所有 适配器都是可移动的(例如 PCI、USB、虚拟等) 即使是内置的 NIC,通常也可以在 BIOS 中禁用。
您真正想知道的是每个适配器的“接口类型”。 此信息可以在 Win32_NetworkAdapterConfiguration 类的标题属性中找到。您可以使用它(与课程中的其他信息一起)来确定每个设备如何连接到机器以及它是否正在使用中。
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
"SELECT Caption, IPEnabled FROM Win32_NetworkAdapterConfiguration",,48)
For Each objItem in colItems
Wscript.Echo objItem.IPEnabled & " " & objItem.Caption
Next
此外,Win32_NetworkAdapterConfiguration 对于 IPEnabled 属性非常有用,因为它可以让您查看 TCP/IP 是否已在适配器上绑定和启用。
这是一个示例输出
False [00000001] 1394 Net Adapter
False [00000002] RAS Async Adapter
False [00000003] WAN Miniport (L2TP)
False [00000004] WAN Miniport (PPTP)
False [00000005] WAN Miniport (PPPOE)
False [00000006] Direct Parallel
False [00000007] WAN Miniport (IP)
False [00000008] Packet Scheduler Miniport
True [00000009] Wireless-B PCI Adapter
False [00000010] Packet Scheduler Miniport
False [00000011] Cisco AnyConnect VPN Virtual Miniport Adapter for Windows
False [00000012] Packet Scheduler Miniport
【讨论】: