2009-10-07 38 views
2

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

在Windows API的GetAdaptersInfoGetAdaptersAddresses,他们将返回是否接口文档中状态是通过类型(MIB_IF_TYPE_LOOPBACK)环回,但对于Microsoft环回适配器这些都不做,至少,它被报告为标准的以太网接口。

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

我可以在描述中检查名称“微软环回适配器”,但这可能有翻译问题并可能导致其他问题。

IP地址也可以更改。

这样做最健壮的方法是什么?

+0

据我所知,环回适配器不应该报告MIB_IF_TYPE_LOOPBACK。该适配器的全部用途是让应用程序使用IP适配器在本地测试其插槽I/O,IP适配器的外观和行为与其他任何以太网适配器相似。 MIB_IF_TYPE_LOOPBACK可能仅由管理实际环回IP的接口(IPV4为127.0.0.1,IPv6为0:0:0:0:0:0:0:1)报告。 –

回答

0

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

Microsoft环回适配器是一个虚拟的网络 环境 测试工具,其中网络访问 不可用。另外,如果 与网络适配器冲突,或者 与网络适配器驱动程序冲突,则必须使用 环回适配器。您可以 绑定网络客户端,协议和 其他网络配置项目 环回适配器,您可以 安装网络适配器驱动程序或 网络适配器后,同时保留 网络配置信息。 您也可以在无人参与的 安装过程中安装Loopback 适配器。

+0

感谢您的解释凯文。我知道回送适配器的用途,我只是希望能够检测到它。为什么它们包含MIB_IF_TYPE_LOOPBACK类型(如果它从未返回)? – BlueSkies

+0

我想你可以设想一个与“普通”适配器无法区分的回送适配器。无论如何,负责“MIB_IF_TYPE_LOOPBACK”的人都无法参与Microsoft Loopback适配器。可能只是一个不方便的命名重叠。 –

-1

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

0

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

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