以编程方式检索.NET中断开的网络适配器信息

时间:2010-03-19 22:45:54

标签: c# .net wmi

我有一个用C#编写的应用程序需要从断开的网络适配器检索IP地址,子网掩码等信息。

我尝试过使用各种方法,例如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

有什么想法吗?

1 个答案:

答案 0 :(得分: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无法定义