如何判断通过 Win32 GetAdaptersInfo()GetAdaptersAddresses() 函数检索到的给定网络适配器是否是可移动适配器,如 USB、SmartCard 等?

这些函数的文档似乎没有包含任何获取该信息的方法,所以我假设我必须去询问 Windows,我发现它是否以某种方式可移动。

你有什么建议?

最佳答案

如果您考虑一下,那么所有适配器都是可移动的(例如 PCI、USB、虚拟等)
通常甚至可以在 BIOS 中禁用内置 NIC。

您真正想知道的是每个适配器的“接口(interface)类型”。
此信息可以在 Win32_NetworkAdapterConfiguration 类的标题属性中找到。您可以使用它(与类(class)中的其他信息一起)来确定每个设备如何连接到机器以及它是否正在使用中。

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 是否已在适配器上绑定(bind)和启用。

这是一个示例输出
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

关于windows - 如何判断网络适配器在 Windows 上是否可移动,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/657701/

10-13 09:02