转载于: https://blog.csdn.net/weixin_30622181/article/details/98771710
ManagementClass类
ManagementBaseObject类
ManagementObject类
ManagementObjectSearcher类
using System; using System.Collections.Generic; using System.Management; //需要添加引用System.Management.dll public sealed class NetworkUtil { //WMI命名空间 private const string WMI_NAMESPACE = "Win32_NetworkAdapterConfiguration"; //WMI类 private const string WMI_CLASS = "root\\CIMV2"; // 查询网卡信息 public static List<NetworkAdapterInfo> GetNetworkAdapters() { List<NetworkAdapterInfo> adapters = new List<NetworkAdapterInfo>(); // 指定查询网卡信息 ( IPEnabled 为 True 的 ) string strQry = "Select * from Win32_NetworkAdapterConfiguration where IPEnabled=True"; // ManagementObjectSearcher 类 ,根据指定的查询获取物理控件的集合。 ManagementObjectSearcher objSc = new ManagementObjectSearcher(strQry); // 用foreach获取元素 foreach (ManagementObject objQry in objSc.Get()) { uint index = (uint)objQry["Index"];//网卡序号 string desc = (string)objQry["Description"];//网卡描述 NetworkAdapterInfo adapter = new NetworkAdapterInfo(); adapter.index = index; adapter.description = desc; adapters.Add(adapter); //Console.WriteLine("网卡: Index={0}, Description={1}", index, desc); } return adapters; } // 设置网络配置 public static void SetNetConfig(string strIndex, string strIP, string strSubmask, string strGateway, string strDNS1, string strDNS2) { ManagementObject objCls = new ManagementObject(WMI_CLASS, WMI_NAMESPACE+".INDEX="+ strIndex, null); ManagementBaseObject objInPara; objInPara = objCls.GetMethodParameters("EnableStatic"); objInPara["IPAddress"] = new string[] { strIP }; // 设置IP objInPara["SubnetMask"] = new string[] { strSubmask }; // 设置子网掩码 objCls.InvokeMethod("EnableStatic", objInPara, null); objInPara = objCls.GetMethodParameters("SetGateways"); objInPara["DefaultIPGateway"] = new string[] { strGateway }; // 设置网关 objCls.InvokeMethod("SetGateways", objInPara, null); //设置DNS //objInPara = objCls.GetMethodParameters("SetDNSServerSearchOrder"); //objInPara["DNSServerSearchOrder"] = new string[] { strDNS1, strDNS2 }; //objCls.InvokeMethod("SetDNSServerSearchOrder", objInPara, null); // GetMethodParameters 方法 : 用來取得 SetDNSServerSearchOrder 的参数列表。 // InvokeMethod 方法 : 调用。 } // 设置自动获取网络配置 public static void AutoNetConfig(string strIndex) { // 建立 ManagementObject 对象 ( Scope , Path , options ) ManagementObject objCls = new ManagementObject(WMI_CLASS, WMI_NAMESPACE + ".INDEX=" + strIndex, null); // InvokeMethod 方法 : 在对象上调用方法。 objCls.InvokeMethod("EnableDHCP", null); // 设置自动获取 IP objCls.InvokeMethod("ReleaseDHCPLease", null); // 释放 IP objCls.InvokeMethod("RenewDHCPLease", null); // 重新取得 IP } // 仅测试用 public static void TestNetConfig() { string strIndex = "5"; //网卡序号 string strIP = "192.168.1.11"; // IP地址 string strSubmask = "255.255.255.0"; // 子网掩码 string strGateway = "192.168.1.1"; // 网关 string strDNS1 = "61.139.2.69"; // 首选DNS string strDNS2 = "168.95.192.1"; // 备用DNS //设置网卡信息 SetNetConfig(strIndex, strIP, strSubmask, strGateway, strDNS1, strDNS2); } // 仅测试用 public static void TestAutoNetConfig() { string strIndex = "5"; //网卡序号 AutoNetConfig(strIndex); } } public class NetworkAdapterInfo { public uint index; public string description; public override string ToString() { return string.Format("网卡: Index={0}, {1}", index, description); } }