c# - 在 .NET 中以编程方式检索断开连接的网络适配器信息

标签 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

有什么想法吗?

最佳答案

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

关于c# - 在 .NET 中以编程方式检索断开连接的网络适配器信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2481013/

相关文章:

c# - 输入来自 InvalidCastException 的数据

c# - 我怎样才能在 C# 中获得真正的操作系统版本?

c# - WMI 重启远程机器

c# - 迭代器和枚举器的区别

c++ - 如何使用 C++ 在 Windows XP 中重新启用已禁用的网络连接?

sql - 从远程计算机访问 SQL - WMI 命名空间

c# - 如何摆脱 MasterDetailPage 空白空间 Xamarin Forms

c# - 带有破折号的 Razor 文件名

c# - 真正简单的短字符串压缩

c# - WCF:无法访问已关闭的流