我的计算机上有两块网卡,一块连接Internet,一块连接办公室内几台计算机,其他计算机通过这台计算机上网。
请问在 C#中 如何配置Internet协议(TCP/IP)的属性,即通过程序修改指定网卡的IP地址、子网掩码、网关、DNS、备用DNS这五个选项?

解决方案 »

  1.   

    http://community.csdn.net/Expert/TopicView.asp?id=2281348
    http://community.csdn.net/Expert/TopicView.asp?id=2195377
      

  2.   

    应该是用API,不过就不知是什么API啦,嘻~
      

  3.   

    我试过了,谢谢了。但是怎样设置网关和DNS呢?
      

  4.   

    这是调试过的代码,希望大家有用
    using  System;  
    using  System.Management;  
    using  System.Threading;  
    namespace  ChangeIP  
    {  
    class  IpChanger  
    {  
    [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;  
    }  
    }  
    /// <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> 
    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.1"  };  
    inPar["SubnetMask"]  =  new  string[]  {  "255.255.255.0"  };  
    outPar = mo.InvokeMethod(  "EnableStatic",  inPar,  null  ); inPar = mo.GetMethodParameters("SetGateways");
    inPar["DefaultIPGateway"] = new string[] { "192.168.0.1" };
    outPar = mo.InvokeMethod("SetGateways", inPar, null); inPar = mo.GetMethodParameters("SetDNSServerSearchOrder");
    inPar["DNSServerSearchOrder"] = new  string[]  {  "61.139.2.69"  };
    outPar = mo.InvokeMethod("SetDNSServerSearchOrder", 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  );  
    }  
    }  
    }  
    }