【问题标题】:C# How get default gateways (routes) and their metrics from disabled or disconnected network adapters (interfaces)?C# 如何从禁用或断开连接的网络适配器(接口)获取默认网关(路由)及其指标?
【发布时间】:2020-06-16 13:59:34
【问题描述】:

如何从禁用或断开连接的网络适配器(接口)获取默认网关(路由)及其指标?

与使用“netsh int ip show address”或“route print”或“netsh interface ip show route”的结果相同,其持久性路由:

还有

  1. WMI 类 Win32_NetworkAdapterConfiguration 仅适用于已启用和已连接的适配器:

string[] gateways = (string[]) objMO["DefaultIPGateway"]; UInt16[] gatewaysMetrics = (UInt16[]) objMO["GatewayCostMetric"];

  1. System.Net.NetworkInformation.NetworkInterface 类适用于断开连接的适配器,但只能获得没有指标的网关 Ips:

NetworkInterface nic = NetworkInterface.GetAllNetworkInterfaces().Where(e => e.Description == comboBoxInterface.Text).FirstOrDefault(); var nicProperties = nic.GetIPProperties(); var gateways = nicProperties.GatewayAddresses.Select(x => x.Address.ToString()).ToList();

  1. GetIpForwardTable 也只为连接的接口获取它。

如何获取断开的接口,如上面的命令?

还有其他方法吗?

【问题讨论】:

    标签: c# c++ networking routes metrics


    【解决方案1】:

    使用 WMI 解决:

    ObjectQuery query = new ObjectQuery("SELECT NextHop, Metric1 FROM Win32_IP4RouteTable WHERE Destination='0.0.0.0' AND Metric1<>0 AND InterfaceIndex=" + selectedNetInterfaceIndex);
    

    但是下一个问题是如何使用 API 呢?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-29
      • 1970-01-01
      相关资源
      最近更新 更多