本帖最后由 fdd2009 于 2009-08-25 12:08:44 编辑

解决方案 »

  1.   


    //自动获取IP
    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.   

    private ManagementBaseObject iObj = null;
            private ManagementBaseObject oObj = null;
            private readonly ManagementObjectCollection moc;
    流血不止啊,lz参考
      

  3.   

    谢谢楼上的大侠指教。但你的答案与我给出的不是一样吗?
    我的目的是:能从“固定IP和DNS“中转换为“自动获取IP和DNS”。
    由“自动获取IP和DNS”转为“固定IP和DNS”我已经会做了,只是反过来该怎么做?
      

  4.   


    private ManagementBaseObject iObj = null;
    private ManagementBaseObject oObj = null;
    private readonly ManagementObjectCollection moc;
    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);
                 }
             }"固定IP和DNS"是指手动设置的吗?lz参考
      

  5.   

    ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_NetworkAdapterConfiguration");
                    ManagementObjectCollection moc = searcher.Get();
                    foreach (ManagementObject mo in moc)
                    {
                        if (!(bool)mo["IPEnabled"]) continue;
                        if ((bool)mo["DHCPEnabled"])
                        {
                           //自动获取
                        }else{//反之}
      

  6.   

    首先,非常感谢 qlzf11140820大侠的耐心指教。
    其次,说明我的表达有问题,可能让大侠误解了。
    在系统IP设置对话框中,不是有两种选择吗:
    一种是“自动获取IP地址和自动获取DNS服务器地址”,
    第二种是“指定IP地址和指定DNS服务器地址”。
    现在我能够用C#从第一种切换到第二种,我想知道的是:如何从第二种切换到第一种(即切换到:自动获取IP及DNS服务器地址”)?网上有代码,如我在前面问题中提到的代码,我试验了不成功。不知道是为什么?是代码有问题,还是我哪里有什么机关注意到?
    烦请 qlzf11140820大侠再解答即给分,非常感激!
      

  7.   

    一种是“和自动获取DNS服务器地址”, 
    第二种是“指定IP地址和指定DNS服务器地址”。
    如何从第二种切换到第一种(即切换到:自动获取IP及DNS服务器地址”)?
    ---------------------------------------------------
    仔细斟酌lz意思,还是认为按照一楼方法就可以实现了,自动获取IP地址(即切换到:自动获取IP及DNS服务器地址),不知是本人太笨还是语文没学好,见谅,呵呵
    //或者使用此方法
    private void button1_Click(object sender, EventArgs e)
            {
                string a = "set   address     name   =\"本地连接\"   source   =   dhcp";
                string b = "set   dns   name   =\"本地连接\"   source   =   dhcp";
                string c = "set   wins   name   =\"本地连接\"   source   =   dhcp";            Process p = new 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("netsh");
                p.StandardInput.WriteLine("interface");
                p.StandardInput.WriteLine("ip");
                p.StandardInput.WriteLine(a.ToString());
                p.StandardInput.WriteLine(b.ToString());
                p.StandardInput.WriteLine(c.ToString());
                p.StandardInput.WriteLine("exit");
                p.StandardInput.WriteLine("exit");
                p.Close();            
            }
      

  8.   

                ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    if (!(bool)mo["IPEnabled"]) continue;
                    mo.InvokeMethod("SetDNSServerSearchOrder", null);
                    mo.InvokeMethod("EnableStatic", null);
                    mo.InvokeMethod("SetGateways", null);
                    mo.InvokeMethod("EnableDHCP", null);
                }