当前位置:编程学习 > C#/ASP.NET >>

C#修改IP

为什么同样的程序,有的电脑可以改IP有的不可以

using System;
using System.Threading;
using System.Management;//需添加相关应用项 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Management.dll   

namespace ConsoleApplication1
{
    class Program
    {
        [MTAThread] 
        static void Main(string[] args)
        {

            ReportIP();
            // SwitchToDHCP(); 
            SwitchToStatic();
            Thread.Sleep(5000);
            ReportIP();
            Console.WriteLine("end.");
            
        }
        static void SwitchToDHCP()
        {
            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;
                inPar = mo.GetMethodParameters("EnableDHCP");
                outPar = mo.InvokeMethod("EnableDHCP", inPar, null);
                break;
            }
        }
        static void SwitchToStatic()
        {
            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;
                inPar = mo.GetMethodParameters("EnableStatic");
                inPar["IPAddress"] = new string[] { "192.168.1.223" };
                inPar["SubnetMask"] = new string[] { "255.255.255.0" };
                outPar = mo.InvokeMethod("EnableStatic", inPar, null);
                break;
            }
        }
        static void ReportIP()
        {
            Console.WriteLine("****** Current IP addresses:");
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection moc = mc.GetInstances();
            foreach (ManagementObject mo in moc)
            {
                if (!(bool)mo["IPEnabled"])
                    continue;
                Console.WriteLine("{0}\n SVC: '{1}' MAC: [{2}]", (string)mo["Caption"],
                (string)mo["ServiceName"], (string)mo["MACAddress"]);
                string[] addresses = (string[])mo["IPAddress"];
                string[] subnets = (string[])mo["IPSubnet"];
                Console.WriteLine(" Addresses :");
                foreach (string sad in addresses)
                    Console.WriteLine("\t'{0}'", sad);
                Console.WriteLine(" Subnets :");
                foreach (string sub in subnets)
                    Console.WriteLine("\t'{0}'", sub);
            }
        }
    }
}
--------------------编程问答-------------------- 有的电脑有多个网卡。 --------------------编程问答-------------------- 已经禁用了 --------------------编程问答-------------------- adsl拨号 --------------------编程问答-------------------- 可以解释清楚点吗? --------------------编程问答-------------------- 除了需要对外发布的机房或者公司或者政府机构 使用固定ip地址外,一般的ip都是动态的;即每次拨号上网的ip都是随机的(一定区域内N个ip)

这个还用普及吗 还是我会错意了 --------------------编程问答-------------------- 有异常没? --------------------编程问答-------------------- 没有异常,我只是修改本机电脑IP --------------------编程问答-------------------- --------------------编程问答-------------------- 我也在做类似的VC程序,情况跟LZ说的一样,看来Vista和Windows7不支持此操作,不过EnableDHCP倒没问题。详见:http://support.microsoft.com/kb/950134  --------------------编程问答-------------------- 看一下失败的那些电脑的系统日志中有没有错误纪录
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,