使用WMI检索主IP地址

时间:2017-01-17 07:11:38

标签: c# windows wmi

我使用WMI管理类在C#中开发了一个程序,以动态添加和删除特定网络适配器的IP地址。到目前为止一切正常,但我无法区分“主要”和“次要”IP地址。我需要知道这个主要地址,以防止它从适配器中删除。

对于'primary',我的意思是特定的IP-Address女巫会显示在网络适配器属性的第一页上。

使用netsh,结果的顺序对应于此特定顺序,首先是主地址,然后是辅助地址。使用WMI和powershell,地址从(数字)最大值到最小值排序。

我是否可以影响此行为,或者您是否知道如何确定网络适配器的第一个/主要地址?我需要netsh返回的相同顺序或Windows GUI中显示的顺序。

这就是我设置静态IP地址的方法,ConfigurationManagmentObject是一个Win32_NetworkAdapterConfiguration WMI对象:

//Bulding the network address list to set
var addressList = new List<NetworkAddress>();
addressList.Add(this.PrimaryIpAddress);
addressList.AddRange(SecondaryIpAddresses);

// Set IPAddress and Subnet Mask
var enableStaticParameters = this.ConfigurationManagmentObject.GetMethodParameters("EnableStatic");
var addresses = new List<string>(finalList.Select(o => o.IpAddress));
enableStaticParameters["IPAddress"] = addresses.ToArray();
var subnets = new List<string>(finalList.Select(o => o.Subnet));
enableStaticParameters["SubnetMask"] = subnets.ToArray();
var result = this.ConfigurationManagmentObject.InvokeMethod("EnableStatic", enableStaticParameters, null);

这就是我检索设置地址的方式:

var ipAddresses = (string[])this.ConfigurationManagmentObject.Properties.Cast<PropertyData>().Where(p => p.Name == "IPAddress").Select(p => p.Value).FirstOrDefault();

我设置的列表的顺序没有反映在我从第二个代码获得的列表中。但是,它由netsh和windows GUI反映

0 个答案:

没有答案