如何在c#中更改本机的IP地址?c#,winform,asp.net都可以要实现的功能是:
1.在自动获得IP和使用下面IP之间切换
2.可以更改IP,子网,DNS高手帮下忙~

解决方案 »

  1.   

    用dos命令netsh导出ip设置
    netsh -c int ip dump >c:\net.txt需要切换时用process运行
    netsh -f c:\net.txt具体使用查netsh帮助
      

  2.   

    //通过WMI修改IP,而实现不用重新启动? 
    using System; 
    using System.Management; 
    using System.Threading;
    using System.Net;
    using System.Net.Sockets;namespace WmiIpChanger 

     class IpChanger 
     { 
      [MTAThread] 
      static void Main(string[] args) 
      { 
       ReportIP(); 
       // SwitchToDHCP(); 
       SwitchToStatic(); 
       Thread.Sleep( 5000 ); 
       ReportIP();
      
       Console.WriteLine( "end." );   Console.ReadLine();
      }   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[] { "10.1.11.78" }; 
        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}\n' 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 ); 
       } 
      } 
     }