【问题标题】:How to tell if a network adapter is removable on Windows如何判断网络适配器在 Windows 上是否可移动
【发布时间】:2009-03-18 10:26:14
【问题描述】:

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

这些功能的文档似乎没有包含任何获取该信息的方法,所以我假设我必须去向 Windows 询问我找到的每个设备是否可以以某种方式移动。

你有什么建议?

【问题讨论】:

    标签: windows winapi networking


    【解决方案1】:

    如果您考虑一下,那么 所有 适配器都是可移动的(例如 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
    

    【讨论】:

    • 嗨弗雷泽,非常感谢。但是,这似乎告诉我适配器是否为“IPEnabled”,而不是它是否可移动。我错过了什么吗?
    • 哦,您的意思是寻找“PCI”、“WAN”、“VPN”等?这是“安全”的方式吗?
    • 我明白你关于“可移动”的观点。实际上,我的意思与谈论可移动存储设备时的意思相同。可移动设备通常与其他用例相关联,并改变假设。但感谢您的回复。 +1
    • 可移动存储完全不同,因为任何不在 BUS 上的东西都被归类为具有可移动存储的设备。然而,这与网络适配器完全无关,因为它们不是存储设备(即使它们碰巧在一个设备上,比如 USB 记忆棒......)
    猜你喜欢
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 2018-11-10
    • 2016-12-15
    • 1970-01-01
    • 2019-09-22
    相关资源
    最近更新 更多