首页 > 编程 > C# > 正文

C#实现一键换IP、重置DNS、网关及掩码的方法

2020-01-24 02:37:44
字体:
来源:转载
供稿:网友

本文实例实现了C#一键换IP、重置DNS、网关及掩码的功能,具体实现的功能为在程序界面窗口中设置ip地址和子网掩码,设置网关地址,设置DNS,并且在设置过程中程序将判断如果没有启用IP设置的网络设备则跳过,重置DNS为空,并开启DHCP。

主要功能代码如下:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Management;namespace changeIP{  public partial class Form1 : Form  {    public Form1()    {      InitializeComponent();    }    private void button1_Click(object sender, EventArgs e)    {      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;        //设置ip地址和子网掩码        inPar = mo.GetMethodParameters("EnableStatic");        string ip = "";        ip = numericUpDown1.Value.ToString() + "." + numericUpDown2.Value.ToString() + "." + numericUpDown3.Value.ToString() + "." + numericUpDown4.Value.ToString();        inPar["IPAddress"] = new string[] { ip };// 1.备用 2.IP        string ym = "";        ym = numericUpDown8.Value.ToString() + "." + numericUpDown7.Value.ToString() + "." + numericUpDown6.Value.ToString() + "." + numericUpDown5.Value.ToString();        inPar["SubnetMask"] = new string[] { ym };        outPar = mo.InvokeMethod("EnableStatic", inPar, null);        //设置网关地址        inPar = mo.GetMethodParameters("SetGateways");        string wg = "";        wg = numericUpDown12.Value.ToString() + "." + numericUpDown11.Value.ToString() + "." + numericUpDown10.Value.ToString() + "." + numericUpDown9.Value.ToString();        inPar["DefaultIPGateway"] = new string[] { wg }; // 1.网关;2.备用网关        outPar = mo.InvokeMethod("SetGateways", inPar, null);        //设置DNS        inPar = mo.GetMethodParameters("SetDNSServerSearchOrder");        string dns1 = numericUpDown16.Value.ToString() + "." + numericUpDown15.Value.ToString() + "." + numericUpDown14.Value.ToString() + "." + numericUpDown13.Value.ToString();        string dns2 = numericUpDown20.Value.ToString() + "." + numericUpDown19.Value.ToString() + "." + numericUpDown18.Value.ToString() + "." + numericUpDown17.Value.ToString();        inPar["DNSServerSearchOrder"] = new string[] { dns1, dns2 }; // 1.DNS 2.备用DNS        outPar = mo.InvokeMethod("SetDNSServerSearchOrder", inPar, null);        break;      }    }    private void button2_Click(object sender, EventArgs e)    {      ManagementClass wmi = new ManagementClass("Win32_NetworkAdapterConfiguration");      ManagementObjectCollection moc = wmi.GetInstances();      foreach (ManagementObject mo in moc)      {        //如果没有启用IP设置的网络设备则跳过        if (!(bool)mo["IPEnabled"])          continue;        //重置DNS为空        mo.InvokeMethod("SetDNSServerSearchOrder", null);        //开启DHCP        mo.InvokeMethod("EnableDHCP", null);      }    }    private void button3_Click(object sender, EventArgs e)    {      this.Close();      this.Dispose();    }    private void Form1_KeyDown(object sender, KeyEventArgs e)    {      switch (e.KeyCode)      {        case Keys.F2:          button1_Click(sender, e);          break;        case Keys.F3:          button2_Click(sender, e);          break;      }    }  }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表