相关的.NET 基类 和 win32 api 均可

解决方案 »

  1.   

    用process的start调用ipconfig修改ip
      

  2.   

    ipconfig /renew 具体怎么写??
      

  3.   

    .NET 基类 和 win32 api我不知道,但在CMD下有個netsh命令可以修改IP地址,
    用System.Diagnostics.Process.Start在程序中執行此命令就可以了.
    例如:
    System.Diagnostics.Process.Start("net.exe", "Send machineName msg")
    不過netsh需多次執行,所以就好的辦法是在程序中先產生一個批文件,然後執行此批文件就好.
      

  4.   

    IPCONFIG/RENEW是自動產生一個自的IP地址,他必須依賴DHCP,有局限性.
      

  5.   

    netsh我覺得更具主動性,一般使用方式可參:http://csru.blogchina.com/blog/article_5994.1320101.html
      

  6.   

    using System;
    using System.Management; namespace egxsun
    {
    /// <summary>
    /// ChangeIP 的摘要说明。
    /// </summary>
    public class ChangeIP 
    {  /// <summary> 
    /// Build of ArLi 2003.6.3 
    /// </summary> 
    public static readonly System.Version myVersion = new System.Version(1,1);  private ManagementBaseObject iObj = null; 
    private ManagementBaseObject oObj = null; 
    private ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
    private readonly ManagementObjectCollection moc;  /// <summary> 
    /// example: 
    /// <code> 
    /// ArLi.CommonPrj.ChangeIP o = new ArLi.CommonPrj.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); 



    } }