C#实现更改IP功能源码

using System;

using System.Management;


public class ChangeIP

{




    private ManagementBaseObject iObj = null;

    private ManagementBaseObject oObj = null;

    private ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");

    private readonly ManagementObjectCollection moc;


    ///<summary>

    /// example:

    ///<code>

    /// ChangeIP o = new 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);

            }

        }

    }

}