一般每个人至少有两种使用计算机的环境:单位工作场所和家。如果这两个场景使用计算机都是使用自动获取IP地址的话,那么可以略过这篇文章了。笔者使用的场景是:家里是自动获取IP地址的,而单位里是使用的静态IP地址。在这种情况下,把笔记本带到家中和单位,总要手工设置IP,才能正常使用网络。
看了上面的内容,如果还想要继续往下看的,那么就是跟我的情况相似了。那么就Follow Me!

1.界面如下

2.需要作一下dll引用

3.名称空间引用

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;
using System.IO;
using System.Net;

4.修改按钮代码如下:

ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){if ((bool)mo["IPEnabled"]){if (mo["Description"].ToString() == comboBox1.SelectedItem.ToString().Trim()){ManagementBaseObject newIP = mo.GetMethodParameters("EnableStatic");ManagementBaseObject newGateway = mo.GetMethodParameters("SetGateways");ManagementBaseObject newDNS = mo.GetMethodParameters("SetDNSServerSearchOrder");// 将要修改的目标 IP 地址//   string selectNewIP;string IPStr = "";string[] IPPart = ipAdd.Text.Split('.');for (int i = 0; i <= 3; i++){//删除尾部首部的空格IPStr += (IPPart[i].Trim() + ".");}IPStr = IPStr.Substring(0, IPStr.Length - 1);newIP["IPAddress"] = new string[] { IPStr };//设置子网掩码string subStr = "";string[] subPart = subMask.Text.Split('.');for (int i = 0; i <= 3; i++){//删除尾部首部的空格subStr += (subPart[i].Trim() + ".");}subStr = subStr.Substring(0, subStr.Length - 1);newIP["SubnetMask"] = new string[] { subStr };//设置网关地址 string gatStr = "";string[] gatPart = gateWay.Text.Split('.');for (int i = 0; i <= 3; i++){gatStr += (gatPart[i].Trim() + ".");}gatStr = gatStr.Substring(0, gatStr.Length - 1);newGateway["DefaultIPGateway"] = new string[] { gatStr };// 将要修改的目标 DNS 首选地址string dnsStr1 = "";string[] dnsPart1 = DNS1.Text.Split('.');for (int i = 0; i <= 3; i++){dnsStr1 += (dnsPart1[i].Trim() + ".");}dnsStr1 = dnsStr1.Substring(0, dnsStr1.Length - 1);// 将要修改的目标 DNS 备用地址string dnsStr2 = "";if (DNS2.Text.Trim()!=""){string[] dnsPart2 = DNS2.Text.Split('.');for (int i = 0; i <= 3; i++){dnsStr2 += (dnsPart2[i].Trim() + ".");}dnsStr2 = dnsStr2.Substring(0, dnsStr2.Length - 1);newDNS["DNSServerSearchOrder"] = new string[] { dnsStr1, dnsStr2 }; }elsenewDNS["DNSServerSearchOrder"] = new string[] { dnsStr1 }; // 修改网络设置try{ManagementBaseObject setIP = mo.InvokeMethod("EnableStatic", newIP, null);ManagementBaseObject setGateways = mo.InvokeMethod("SetGateways", newGateway, null);ManagementBaseObject setDNS = mo.InvokeMethod("SetDNSServerSearchOrder", newDNS, null);MessageBox.Show("设置成功");}catch (Exception ex){MessageBox.Show(ex.Message);}break;}}}

5.自动获取代码如下

ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){if ((bool)mo["IPEnabled"]){if (mo["Description"].ToString() == comboBox1.SelectedItem.ToString().Trim()){//重置DNS为空   mo.InvokeMethod("SetDNSServerSearchOrder", null);//开启DHCP   mo.InvokeMethod("EnableDHCP", null);MessageBox.Show("自动获取IP成功!");break;}}}

6.保存配置文件代码

 try{string path = Application.StartupPath + "\\config.ini";if (File.Exists(path)){File.Delete(path);}using (StreamWriter sw = File.AppendText(path)){sw.WriteLine(ipAdd.Text);sw.WriteLine(subMask.Text);sw.WriteLine(gateWay.Text);sw.WriteLine(DNS1.Text);sw.WriteLine(DNS2.Text);}}catch (Exception ex){MessageBox.Show("写入配置文件错误!" + ex.Message);}

7. 退出代码

 Application.Exit();

8.窗体Load事件代码

string carName = "";ManagementObjectSearcher search = new ManagementObjectSearcher("SELECT * FROM Win32_NetWorkAdapterConfiguration");foreach (ManagementObject sear in search.Get()){if (sear["IPAddress"] != null){carName = sear["Description"].ToString().Trim();comboBox1.Items.Add(carName);}}comboBox1.SelectedIndex = 0;string path=Application.StartupPath+"\\config.ini";if(File.Exists(path)){using (StreamReader sr = File.OpenText(path)){ipAdd.Text = sr.ReadLine();subMask.Text = sr.ReadLine();gateWay.Text = sr.ReadLine();DNS1.Text = sr.ReadLine();DNS2.Text = sr.ReadLine();}}else{ShowInfo();}

9.自定义方法 ShowInfo()

 public void ShowInfo(){ManagementClass myMClass = new ManagementClass("Win32_NetworkAdapterConfiguration");ManagementObjectCollection myMOCollection = myMClass.GetInstances();foreach (ManagementObject MObject in myMOCollection){if (!(bool)MObject["IPEnabled"])continue;string[] strIP = (string[])MObject["IPAddress"];            //获取IP地址string[] strSubnet = (string[])MObject["IPSubnet"];         //获取子网掩码string[] strGateway = (string[])MObject["DefaultIPGateway"];//获取默认网关string[] strDns = (string[])MObject["DNSServerSearchOrder"];//获取DNS服务器ipAdd.Text = "";//显示IP地址foreach (string ip in strIP){IPAddress ipaddress = IPAddress.Parse(ip);if (ipaddress.AddressFamily.ToString() != "InterNetwork")continue;if (ipAdd.Text.Trim() != ""){ipAdd.Text += "," + ip;}else{ipAdd.Text = ip;}}subMask.Text = "";//显示子网掩码foreach (string subnet in strSubnet){if (subnet.IndexOf('.') <= 0)continue;if (subMask.Text.Trim() != ""){subMask.Text += "," + subnet;}else{subMask.Text = subnet;}}gateWay.Text = "";//显示默认网关foreach (string gateway in strGateway){IPAddress ipaddress = IPAddress.Parse(gateway);if (ipaddress.AddressFamily.ToString() != "InterNetwork")continue;if (gateWay.Text.Trim() != ""){gateWay.Text += "," + gateway;}else{gateWay.Text = gateway;}}try{//显示DNS服务器for (int i = 0; i < strDns.Length; i++){if (i == 0)DNS1.Text = strDns[i];elseDNS2.Text = strDns[i];}}catch { }}}

喜欢我的文章和教程请关注!

C#程序之快速切换IP地址相关推荐

  1. linux切换ip地址脚本,批处理实现的ip地址切换的复杂脚本

    @echo off cls echo **************** echo IP地址切换 echo 版本:070510 echo **************** echo. echo 0705 ...

  2. java 修改ip_如何用脚本快速修改IP地址(Netsh)

    评论 # re: 如何用脚本快速修改IP地址(Netsh) 2006-03-30 15:36 david.turing (2006-03-30 15:12:48) 胡子鱼-SD(18684412) 另 ...

  3. 计算机如何输入ip地址,电脑如何切换ip地址_怎么让电脑切换ip地址-win7之家

    在每台电脑中,系统中的ip协议都会有提供一种统一的ip地址,能够为为互联网上的每一个网络和每一台主机分配一个逻辑地址,从而达到屏蔽物理地址的差异,同时我们也可以对ip地址进行切换,那么电脑如何切换ip ...

  4. bat 切换网络适配器_Windows批处理自动切换IP地址设置无线网络和以太网的IP地址...

    经常带着笔记本电脑来回公司与家里上网,会碰到要切换本地IP的情况,由于上班公司工作需要设置固定IP才能上网,而在家都是自动获取IP地址的,下面这个bat批处理文件,可以很方便切换IP地址. @echo ...

  5. Linux:快速查看IP地址及修改IP地址

    导读 Linux下如何快速查看IP地址及修改IP地址,有一个方法供参考 查ip 方法/步骤1: 打开linux操作系统在进入到界面 方法/步骤2: 在桌面右击打开终端. 方法/步骤3: 终端里输入if ...

  6. Java 程序获取本机 ip 地址

    Java程序获取本机ip地址: host_ip_list = new ArrayList<String>(); try {for (NetworkInterface networkInte ...

  7. 切换ip地址是什么意思 切换ip地址的快捷方式

    切换ip地址是什么意思 切换IP地址是指计算机更换通信地址.这就像我们日常生活中的改变家庭地址一样.每一台计算机都有世界上唯一的IP地址来确定它的位置.切换IP地址通常用于访问不同地区的网络或者改变网 ...

  8. 编写一个shell脚本程序,检测指定IP地址的主机是否在线

    编写一个脚本程序,检测指定IP地址的主机是否在线,如果在线则显示输出Online,否则输出Offline checkhost.sh [root@exam ~]# cd scripts [root@ex ...

  9. 切换IP地址的小工具

    由于学校采用了静态IP,以至于每次换网络环境的时候就要调整一次,非常麻烦.所以在网上找了相关的文章来看,试图用python写一个这样的小工具. 本来是想用WMI的,但是总是报错,不知道为什么.弄不下去 ...

  10. 5_Windows下利用批处理切换IP地址

    作为IT从业人士,我们经常需要在公司上网(严格意义上来说本人不算IT人士,顶多算个计算机科学的爱好者,也许连个爱好者 也算不上),但是公司和家里的IP地址通常不一样(也许有人会说,公司和家里的IP一定 ...

最新文章

  1. python3生成二维码中间带logo,有底图,可自定义文字
  2. WinAPI: CreateFontIndirect - 根据字体结构建立逻辑字体
  3. ASP.NET MVC (一、控制器与视图)
  4. java 1 0_【Java】1.0 开发环境
  5. div固定在浏览器顶部_关于浏览器的兼容问题
  6. mysql排序快还是list排序快_2018全国农产品批发市场行业百强排序出炉,快看广西有几个?...
  7. 最近很火的数据动图python_12个流行的Python数据可视化库总结
  8. python安装rarfile模块_python模块整理7-zipfile模块
  9. 攻击者接管账户,攻陷周下载量超700万次的JavaScript 流行库 ua-parser-js
  10. 打破定式,突破屏障,走出自己的创意舒适区(转)
  11. python canvas画弧度_超清字符画——Python代码
  12. XLN Audio Addictive Trigger for Mac(智能鼓音替换工具)
  13. CCS+C6678LE开发记录14:多核协作之OMP与IPC方式的较量
  14. 苹果4s怎么越狱_越狱软件续签教程
  15. python地震数据处理_python地震数据可视化详解
  16. js操作浏览器选项卡_如何在浏览器选项卡中显示更新通知
  17. pip install清华镜像源
  18. 夏令营导师自荐信计算机专业,北大夏令营的自荐信
  19. vue2.0桌面端框架_Element-UI组件库(Vue2.0桌面端组件库)V2.9.2 免费版
  20. 小福利,用selenium模块爬取qq音乐歌单!

热门文章

  1. Win10 CMD命令大全与超好用的快捷键
  2. 最新BT面板静态文件镜像库v7.1.1
  3. php mysql网页象棋源码_C# 中国象棋 游戏源码
  4. 一个简单的轮播图代码
  5. win10打开计算机出现马赛克,主编处理win10系统播放视频影片出现锯齿、马赛克、模糊的办法?...
  6. KEPWARE通过MODBUS_TCP连接西门子PAC3200电能表
  7. 【钉钉-场景化能力包】家校沟通
  8. NAT(地址转换技术)详解
  9. java时间格式转换
  10. Jmeter链接MySQL读写数据