public static IPAddress[] GetIpsByWmi()
{
List<IPAddress> ips = new List<IPAddress>();
using(ManagementObjectSearcher adapterSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter where NetConnectionStatus=2"))
{
foreach(ManagementObject adapter in adapterSearcher.Get())
{
int index = Convert.ToInt32(adapter["index"]);
string query = string.Format("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE Index={0} AND IPEnabled='true'", index);
using(ManagementObjectSearcher confSearcher = new ManagementObjectSearcher(query))
{
foreach(ManagementObject config in confSearcher.Get())
{
// List all IP addresses of the current network interface
string[] addressList = (string[])config["IPAddress"];
foreach(string address in addressList)
ips.Add(IPAddress.Parse(address));
}
}
}
return ips.ToArray();
}
}