2009-10-07 68 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