检测网络接口是否为环回适配器的最佳方法是什么?
Windows API的 GetAdaptersInfo 和 GetAdaptersAddresses 状态在文档中,无论接口是否为通过类型( MIB_IF_TYPE_LOOPBACK )的环回,它们都将返回但至少这些都不适用于Microsoft Loopback Adapter,它被报告为标准的以太网接口。
我可以尝试检查Loopback适配器的默认MAC ,但这很容易被欺骗。
我可以在说明中检查名称“ Microsoft Loopback Adapter ”,但这可能会有翻译问题并可能导致其他问题。
IP地址也可以更改。
执行此操作的最有效方法是什么?
答案 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检查每个网络接口的驱动程序。