从C#.NET中的WMI查询中检索单个IP地址

时间:2014-01-02 12:21:34

标签: c# arrays

我在C#.NET中使用WMI查询使用以下代码检索启用的适配器上的IP地址;

ManagementObjectSearcher NetworkSearcher = new ManagementObjectSearcher("SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'TRUE'");

foreach (ManagementObject NetworkObj in NetworkSearcher.Get())
{
     String[] arrIPAddress = (String[])(NetworkObj["IPAddress"]);

     MessageBox.Show(arrIPAddress[0]);
     //sIPAddress = arrIPAddress[0];
}

如果我在消息框中输出arrIPAddress阵列的位置0,我会得到两个单独的消息框,一个接一个,第一个包含第一个NIC的IPv4地址,第二个也是第一个NIC的IPv6地址。 (如果我尝试在阵列中引用1,则分别为第二个NIC获取IPv4和IPv6地址)

我想要实现的是然后只将第一个IPv4地址(显示在第一个消息框中)分配给变量' sIPAddress'但我无法锻炼如何正确分离阵列。我试着看看数组中是否有第二个元素(例如arrIPAddres [0,1]但是没有这样的第二个属性。)

提前感谢任何建议。

1 个答案:

答案 0 :(得分:0)

在另一个论坛(链接here

中,我很友好地回答了这个问题

但最终提供我想要的代码如下:

foreach( ManagementObject NetworkObj in NetworkSearcher.Get() )
{
string[] arrIPAddress = (string[])( NetworkObj["IPAddress"] );

sIPAddress = arrIPAddress.FirstOrDefault( s => s.Contains( '.' ) );

if( sIPAddress != null ) break;
}