c# - Win32_NetworkAdapter 查询中的网络地址始终为空

标签 c# networking wmi

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

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

        IPAddress[] ipV4Addresses = Array.FindAll(
            Dns.GetHostEntry(String.Empty).AddressList,
            a => a.AddressFamily == AddressFamily.InterNetwork);

查看 MSDN 文档 here ,我想也许我走在正确的道路上。有人成功获取每个适配器的 IP 地址列表吗?如果是这样,请分享你的智慧。谢谢!

这就是所有的原型(prototype)。我有这段代码(感谢 SO!),并且 string[] netAddresses 始终为空,即使计算机已连接到网络并且具有正常工作的 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);
                }
            }
        }

最佳答案

来自 MS 文档:http://msdn.microsoft.com/en-us/library/windows/desktop/aa394216%28v=vs.85%29.aspx

网络地址

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

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

该属性尚未实现。默认情况下返回 NULL 值。

关于c# - Win32_NetworkAdapter 查询中的网络地址始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7822708/

相关文章:

c# - 如何在 SQL CLR 项目中访问 WMI

c# - 如何在不加载程序集的情况下检查程序集是否包含单元测试?

c# - 将 WPF DataGrid 绑定(bind)到 List<List<int>> 对象

c# - ExecuteAsync() 导致硬崩溃,无一异常(exception)

GCE 上的 Python : connection failed because connected host has failed to respond

linux - 需要 SNMPv3 陷阱唯一内容分隔符

curl - Docker容器:容器之间的 curl 不起作用

c# - 图像未显示在 FlowDocument 中

f# - 如何在远程机器上使用 FSharp.Management WMI Provider

c++ - 将 win32_logicaldisk 映射到 win32_diskdrive?