C#实现更改IP功能(原码)

using System;
using System.Management;

namespace ArLi.CommonPrj
{
    public class ChangeIP
    {
        /// <summary> 
        /// Build of ArLi 2003.6.3 
        /// </summary> 
        public static readonly System.Version myVersion = new System.Version(1, 1);

        private ManagementBaseObject iObj = null;
        private ManagementBaseObject oObj = null;
        private ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
        private readonly ManagementObjectCollection moc;

        /// <summary> 
        /// example: 
        /// <code> 
        /// ArLi.CommonPrj.ChangeIP o = new ArLi.CommonPrj.ChangeIP(); 
        /// string[] ipList = new string[]{"192.168.0.253","192.168.0.250"}; 
        /// string[] subnetList = new string[]{"255.255.255.0","255.255.255.0"}; 
        /// o.ChangeTo(ipList,subnetList); 
        /// </code> 
        /// </summary> 
        public ChangeIP()
        {
            moc = mc.GetInstances();
        }

        /// <summary>cortrol</summary> 
        /// <param name="ipAddr">IPAddr List</param> 
        /// <param name="subnetMask">subnetMask List</param> 
        public void ChangeTo(string[] ipAddr, string[] subnetMask)
        {
            foreach (ManagementObject mo in moc)
            {
                if (!(bool)mo["IPEnabled"]) continue;

                iObj = mo.GetMethodParameters("EnableStatic");
                iObj["IPAddress"] = ipAddr;
                iObj["SubnetMask"] = subnetMask;
                oObj = mo.InvokeMethod("EnableStatic", iObj, null);
            }
        }

        /// <summary>cortrol</summary> 
        /// <param name="ipAddr">IPAddr List</param> 
        /// <param name="subnetMask">subnetMask List</param> 
        /// <param name="gateways">gateway List</param> 
        /// <param name="gatewayCostMetric">gateway CostMetric List, example: 1</param> 
        public void ChangeTo(string[] ipAddr, string[] subnetMask, string[] gateways, string[] gatewayCostMetric)
        {
            foreach (ManagementObject mo in moc)
            {
                if (!(bool)mo["IPEnabled"]) continue;

                iObj = mo.GetMethodParameters("EnableStatic");
                iObj["IPAddress"] = ipAddr;
                iObj["SubnetMask"] = subnetMask;
                oObj = mo.InvokeMethod("EnableStatic", iObj, null);

                iObj = mo.GetMethodParameters("SetGateways");
                iObj["DefaultIPGateway"] = gateways;
                iObj["GatewayCostMetric"] = gatewayCostMetric;
                oObj = mo.InvokeMethod("SetGateways", iObj, null);
            }
        }

        /// <summary>cortrol</summary> 
        /// <param name="ipAddr">IPAddr List</param> 
        /// <param name="subnetMask">subnetMask List</param> 
        /// <param name="gateways">gateway List</param> 
        /// <param name="gatewayCostMetric">gateway CostMetric List, example: 1</param> 
        /// <param name="dnsServer">DNSServer List</param> 
        public void ChangeTo(string[] ipAddr, string[] subnetMask, string[] gateways, string[] gatewayCostMetric, string[] dnsServer)
        {
            foreach (ManagementObject mo in moc)
            {
                if (!(bool)mo["IPEnabled"]) continue;

                iObj = mo.GetMethodParameters("EnableStatic");
                iObj["IPAddress"] = ipAddr;
                iObj["SubnetMask"] = subnetMask;
                oObj = mo.InvokeMethod("EnableStatic", iObj, null);

                iObj = mo.GetMethodParameters("SetGateways");
                iObj["DefaultIPGateway"] = gateways;
                iObj["GatewayCostMetric"] = gatewayCostMetric;
                oObj = mo.InvokeMethod("SetGateways", iObj, null);

                iObj = mo.GetMethodParameters("SetDNSServerSearchOrder");
                iObj["DNSServerSearchOrder"] = dnsServer;
                oObj = mo.InvokeMethod("SetDNSServerSearchOrder", iObj, null);
            }
        }

        /// <summary>DHCPEnabled</summary> 
        public void EnableDHCP()
        {
            foreach (ManagementObject mo in moc)
            {
                if (!(bool)mo["IPEnabled"]) continue;

                if (!(bool)mo["DHCPEnabled"])
                {
                    iObj = mo.GetMethodParameters("EnableDHCP");
                    oObj = mo.InvokeMethod("EnableDHCP", iObj, null);
                }
            }
        }
    }
}
Contributors: FHL