C# Win32_NetworkAdapter查询中的NetAddress始终为空

C# Win32_NetworkAdapter查询中的NetAddress始终为空,c#,networking,wmi,C#,Networking,Wmi,我正在尝试获取活动网络适配器的IP地址,以避免当前未连接的虚拟和其他VPN适配器 在我当前的笔记本电脑上,以下代码返回3个IP V4地址,我不知道如何从该列表中获取“真实的”正在使用的IP地址 IPAddress[] ipV4Addresses = Array.FindAll( Dns.GetHostEntry(String.Empty).AddressList, a => a.AddressFamily == Address

我正在尝试获取活动网络适配器的IP地址,以避免当前未连接的虚拟和其他VPN适配器

在我当前的笔记本电脑上,以下代码返回3个IP V4地址,我不知道如何从该列表中获取“真实的”正在使用的IP地址

        IPAddress[] ipV4Addresses = Array.FindAll(
            Dns.GetHostEntry(String.Empty).AddressList,
            a => a.AddressFamily == AddressFamily.InterNetwork);
看着MSDN文档,我想也许我的思路是对的。是否有人成功获得每个适配器的IP地址列表?如果是这样,请分享你的智慧。谢谢

这是所有在这一点上的原型。我有这段代码(多亏了SO!),字符串[]netaddress始终为空,即使计算机连接到网络并具有正常工作的IP地址

        string wmiQuery = "SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionId != NULL";
        ManagementObjectSearcher moSearch = new ManagementObjectSearcher(wmiQuery);
        ManagementObjectCollection moCollection = moSearch.Get();

        foreach (ManagementObject mo in moCollection)
        {
            Console.WriteLine("{0} is {1}", mo["Name"], mo["NetConnectionStatus"]);
            string[] netAddresses = (string[])mo["NetworkAddresses"];
            if (netAddresses != null)
            {
                foreach (string netAddress in netAddresses)
                {
                    Console.WriteLine("\tnet addresses:");
                    Console.WriteLine("\t\t{0}", netAddress);
                }
            }
        }

没有“真正的”IP地址。您发送的每个数据包都将根据适配器的度量和可用的路由路径路由到其目的地。通过执行以下操作,您可以猜测哪个IP主要用于internet流量:

  • 按公制订购适配器,最低优先
  • 优先考虑广域网IP,然后是192.168.x.x,然后是10.x.x.x,并完全忽略环回地址
  • 这将让您猜测“首选”地址,尽管它很难确定。

    来自MS docs:

    网络地址

    数据类型:字符串数组 访问类型:只读

    适配器的网络地址数组。此属性继承自CIM_NetworkAdapter


    此属性尚未实现。默认情况下,它返回一个空值。

    查看WIn32\u NetworkAdapter配置,通过使用WIn32\u NetworkAdapter中的InterfaceIndex,您应该能够获得分配给该nic的IP地址所需的配置。

    定义“真实”。可以同时使用任何或所有IPv4地址。如果你的电脑有两个或两个以上的“真实”NIC怎么办?@Gaz,很抱歉用了非技术术语“真实”。我指的是当前插入的NIC,用于通过浏览器与internet通信。我知道一次可能会插入多个NIC,但在我们的用户群中,这将是极为罕见的。RTFM为我。对不起。