这是以前用BMI实现的代码,在我计算机上运行通过。using  System;  
using  System.Management;  
using  System.Threading;  
 
namespace  WmiIpChanger  
{  
           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;  
                                   }  
                       }  
 
                       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  );  
                                               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  );  
                                   }  
                       }  
           }  
}