我正在尝试获取事件网络适配器的 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/