软件编程
位置:首页>> 软件编程>> C#编程>> C#实现一键换IP、重置DNS、网关及掩码的方法

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

作者:shichen2014  发布时间:2021-10-03 00:32:33 

标签:C#,换IP,DNS,网关,掩码

本文实例实现了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;
     }
   }
 }
}
0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com