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;
}
}
}
}