C#实现一键换IP、重置DNS、网关及掩码的方法
本文实例实现了C#一键换IP、重置DNS、网关及掩码的功能,具体实现的功能为在程序界面窗口中设置ip地址和子网掩码,设置网关地址,设置DNS,并且在设置过程中程序将判断如果没有启用IP设置的网络设备则跳过,重置DNS为空,并开启DHCP。
主要功能代码如下:
usingSystem; usingSystem.Collections.Generic; usingSystem.ComponentModel; usingSystem.Data; usingSystem.Drawing; usingSystem.Text; usingSystem.Windows.Forms; usingSystem.Management; namespacechangeIP { publicpartialclassForm1:Form { publicForm1() { InitializeComponent(); } privatevoidbutton1_Click(objectsender,EventArgse) { ManagementBaseObjectinPar=null; ManagementBaseObjectoutPar=null; ManagementClassmc=newManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollectionmoc=mc.GetInstances(); foreach(ManagementObjectmoinmoc) { if(!(bool)mo["IPEnabled"]) continue; //设置ip地址和子网掩码 inPar=mo.GetMethodParameters("EnableStatic"); stringip=""; ip=numericUpDown1.Value.ToString()+"."+numericUpDown2.Value.ToString()+"."+numericUpDown3.Value.ToString()+"."+numericUpDown4.Value.ToString(); inPar["IPAddress"]=newstring[]{ip};//1.备用2.IP stringym=""; ym=numericUpDown8.Value.ToString()+"."+numericUpDown7.Value.ToString()+"."+numericUpDown6.Value.ToString()+"."+numericUpDown5.Value.ToString(); inPar["SubnetMask"]=newstring[]{ym}; outPar=mo.InvokeMethod("EnableStatic",inPar,null); //设置网关地址 inPar=mo.GetMethodParameters("SetGateways"); stringwg=""; wg=numericUpDown12.Value.ToString()+"."+numericUpDown11.Value.ToString()+"."+numericUpDown10.Value.ToString()+"."+numericUpDown9.Value.ToString(); inPar["DefaultIPGateway"]=newstring[]{wg};//1.网关;2.备用网关 outPar=mo.InvokeMethod("SetGateways",inPar,null); //设置DNS inPar=mo.GetMethodParameters("SetDNSServerSearchOrder"); stringdns1=numericUpDown16.Value.ToString()+"."+numericUpDown15.Value.ToString()+"."+numericUpDown14.Value.ToString()+"."+numericUpDown13.Value.ToString(); stringdns2=numericUpDown20.Value.ToString()+"."+numericUpDown19.Value.ToString()+"."+numericUpDown18.Value.ToString()+"."+numericUpDown17.Value.ToString(); inPar["DNSServerSearchOrder"]=newstring[]{dns1,dns2};//1.DNS2.备用DNS outPar=mo.InvokeMethod("SetDNSServerSearchOrder",inPar,null); break; } } privatevoidbutton2_Click(objectsender,EventArgse) { ManagementClasswmi=newManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollectionmoc=wmi.GetInstances(); foreach(ManagementObjectmoinmoc) { //如果没有启用IP设置的网络设备则跳过 if(!(bool)mo["IPEnabled"]) continue; //重置DNS为空 mo.InvokeMethod("SetDNSServerSearchOrder",null); //开启DHCP mo.InvokeMethod("EnableDHCP",null); } } privatevoidbutton3_Click(objectsender,EventArgse) { this.Close(); this.Dispose(); } privatevoidForm1_KeyDown(objectsender,KeyEventArgse) { switch(e.KeyCode) { caseKeys.F2: button1_Click(sender,e); break; caseKeys.F3: button2_Click(sender,e); break; } } } }