【问题标题】:Programmatically retrieve disconnected network adapter information in .NET以编程方式检索 .NET 中断开连接的网络适配器信息
【发布时间】:2023-03-21 09:10:02
【问题描述】:

我有一个用 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

有什么想法吗?

【问题讨论】:

  • XP 示例中的 IP 地址是链接本地地址 - 即当您无法通过 DHCP 获得真实 IP 地址时获得的地址。
  • 在这种情况下,它实际上是我使用 netsh 强制到适配器上的静态 LLA IP 地址。

标签: c# .net wmi


【解决方案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 无法定义

【讨论】:

    猜你喜欢
    • 2012-01-04
    • 2017-04-02
    • 2010-10-15
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 2023-01-27
    • 1970-01-01
    相关资源
    最近更新 更多