2010-03-19 93 views
3

我有一個用C#編寫的應用程序,需要從斷開的網絡適配器檢索IP地址,子網掩碼等信息。在.NET中以編程方式檢索斷開的網絡適配器信息

我試過使用各種方法,如WMI和.NET NetworkAdapter類,但它們在網絡適配器斷開連接時不返回任何有用的數據。我非常確定Windows會將此信息保存在某處,因爲我可以使用netsh應用網絡設置,並且它在控制面板中正確顯示。

XP中對我有用的一件事是解析netsh工具的輸出,即使對於斷開連接的適配器,它也會返回信息。然而,這似乎並沒有工作在Windows 7

Win XP的輸出:

Configuration for interface "Local Area Connection 5" 
    DHCP enabled:       No 
    IP Address:       169.254.0.128 
    SubnetMask:       255.255.255.0 
    InterfaceMetric:      0 

Win7的輸出:

Configuration for interface "Local Area Connection 2" 
    DHCP enabled:       No 
    InterfaceMetric:      5 

任何想法?

+0

在IP地址XP示例是一個鏈接本地地址 - 即當您無法通過DHCP獲取真實IP地址時獲得的地址。 – 2010-03-19 23:02:15

+0

在這種情況下,它實際上是一個靜態LLA IP地址,我使用netsh將其強制到適配器上。 – 2010-03-19 23:57:52

回答

1
NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged); 

和/或

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\* 
- List Interfaces 

然後

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\\*\Parameters\Tcpip 
current settings parameters 

如果DHCP - ON則僅NetworkChange.NetworkAddressChanged因爲當前的IP是不可能定義

相關問題