文章收藏-FAQ 位置:电脑学习网

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);
            }
        }
    }
}

     [文章来源:“十万个为什么”电脑学习网]
     [网络地址:http://why100000.com]
     [版权声明:除本站部分特别声明禁止转载的专稿外,其他的文章可以自由转载,但请务必注明出处和原始作者。本站文章版权归文章原作者所有。如果本站转载的文章有版权问题请联系本站,我们会尽快予以更正。]
 

【字体:[大] [中] [小] 【加入收藏】 【发表评论】 【关闭本窗口】

Copyright © “十万个为什么”电脑学习网 2000-2007 陕ICP备06007929号
站务联系:MSN & Email:zhangking2008@gmail.com  QQ:9365822