检测环回适配器

时间:2009-10-07 02:04:13

标签: windows winapi network-programming

检测网络接口是否为环回适配器的最佳方法是什么?

Windows API的 GetAdaptersInfo GetAdaptersAddresses 状态在文档中,无论接口是否为通过类型( MIB_IF_TYPE_LOOPBACK )的环回,它们都将返回但至少这些都不适用于Microsoft Loopback Adapter,它被报告为标准的以太网接口。

我可以尝试检查Loopback适配器的默认MAC ,但这很容易被欺骗。

我可以在说明中检查名称“ Microsoft Loopback Adapter ”,但这可能会有翻译问题并可能导致其他问题。

IP地址也可以更改。

执行此操作的最有效方法是什么?

5 个答案:

答案 0 :(得分:0)

Microsoft环回适配器用于伪造网络。它骗你,因为这是它的目的。 MSDN citation

  

Microsoft Loopback适配器是一个   虚拟网络的测试工具   网络访问的环境   无法使用。此外,你必须使用   如果有环回适配器   与网络适配器冲突或   使用网络适配器驱动程序。您可以   绑定网络客户端,协议和   其他网络配置项   Loopback适配器,你可以   安装网络适配器驱动程序或   稍后保留网络适配器   网络配置信息。   您也可以安装Loopback   适配器在无人值守期间   安装过程。

答案 1 :(得分:0)

MIB_IF_TYPE_LOOPBACK可能是指环回地址127.0.0.1。如果适配器具有静态(或可配置)MAC地址(以太网地址),则应该可以找出适配器是否是Microsoft环回适配器。或者它可能没有?

答案 2 :(得分:0)

使用WMI,请参阅WMI Code Creator v1.0处的示例:

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\CIMV2") 
Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_PerfRawData_Tcpip_TCP",,48) 
For Each objItem in colItems 
    Wscript.Echo "-----------------------------------"
    Wscript.Echo "Win32_PerfRawData_Tcpip_TCP instance"
    Wscript.Echo "-----------------------------------"
    Wscript.Echo "Name: " & objItem.Name
Next

答案 3 :(得分:0)

我可以通过简单查看IfType结构的IP_ADAPTER_ADDRESSES成员来检测回送适配器。如果为IF_TYPE_SOFTWARE_LOOPBACK,则适配器为回送适配器。在Windows 7和Windows 10上可以正常工作。

答案 4 :(得分:-1)

您可以使用WMI检查每个网络接口的驱动程序。