我用下面的代码来修改IP地址,程序执行过后 没有反应,IP地址没有修改过来 ,不知道怎么回事,请高手指点一下
1、在 “解决方案资源管理器” 右击 “引用” 添加 “System.Management” 的引用。
2、添加 “using System.Management;”。         static void SetNetworkAdapter()
        {
            ManagementBaseObject inPar = null;
            ManagementBaseObject outPar = null;
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection moc = mc.GetInstances();
            foreach (ManagementObject mo in moc)
            {
                if (!(bool)mo["IPEnabled"])
                    continue;                //设置ip地址和子网掩码 
                inPar = mo.GetMethodParameters("EnableStatic");
                inPar["IPAddress"] = new string[] { "192.168.16.248", "192.168.16.249" };// 1.备用 2.IP
                inPar["SubnetMask"] = new string[] { "255.255.255.0", "255.255.255.0" };
                outPar = mo.InvokeMethod("EnableStatic", inPar, null);                //设置网关地址 
                inPar = mo.GetMethodParameters("SetGateways");
                inPar["DefaultIPGateway"] = new string[] { "192.168.16.2", "192.168.16.254" }; // 1.网关;2.备用网关
                outPar = mo.InvokeMethod("SetGateways", inPar, null);                //设置DNS 
                inPar = mo.GetMethodParameters("SetDNSServerSearchOrder");
                inPar["DNSServerSearchOrder"] = new string[] { "211.97.168.129", "202.102.152.3" }; // 1.DNS 2.备用DNS
                outPar = mo.InvokeMethod("SetDNSServerSearchOrder", inPar, null);
                break;
            }
        }

解决方案 »

  1.   

    给个参考:
    http://www.cnblogs.com/greystar/archive/2008/02/01/2235392.html
    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);
                }
            }
        }
    }
      

  2.   

    不好意思 ,一直换平台了, 最近才上来,模拟cmd命令修改
    string _doscmd = "netsh interface ip set address 本地连接 static " + textBox_toIP.Text.ToString();
                    System.Diagnostics.Process p = new System.Diagnostics.Process();
                    p.StartInfo.FileName = "cmd.exe";
                    p.StartInfo.UseShellExecute = false;
                    p.StartInfo.RedirectStandardInput = true;
                    p.StartInfo.RedirectStandardOutput = true;
                    p.StartInfo.RedirectStandardError = true;
                    p.StartInfo.CreateNoWindow = true;
                    p.Start();
                    p.StandardInput.WriteLine(_doscmd.ToString());
                    p.StandardInput.WriteLine("exit");
                    //st.textBox_startTXT.AppendText("IP地址已经修改已经执行完毕!......\r\n");
                     MessageBox.Show("IP地址已经修改");