1. 讲个故事

我的一同事需要调试 PLC,需要经常修改电脑 IP 在各个工位的 PLC 间来回连接。于是,每次需要改变 IP 的时候都是手动点开网络管理界面然后再修改。终于有一天,一天改 80 次 IP 的他开始开始抱怨,手动修改 IP 真 TM 麻烦。于是我就想了个办法怎么来偷懒解决这个问题。

2. 开始动手

因为常用的是C#,从 win32 API 获取网卡 IP 的接口直接封装没多大问题,一通折腾,发现很是麻烦。但是查找 API 的时候找一个更好的办法,.net 里提供了相应的包 System.Net.NetworkInformation ,直接引用就好了。这里省了不少事。于是开始获取本机全部网卡,读取 IP 等信息。监听 IP 变化事件。一个小 DEMO 就这样跑起来了。

但是如何设置 IP 呢,API 里也没有对应的函数可以调用(如果谁知道是哪个可以小小声告诉我),网上有两种办法一种是通过 WMI, 一种是使用 shell 命令,我选择了第二种,使用 netsh 命令来设置 IP。小陀螺转起来吧。

3. 水面下的冰山

就在踌躇满志,以为大功告成之际发现一个不大不小的问题。在网卡原本是 DHCP 状态是,修改成手动设置 IP 的过程中没有任何问题。但是当切回 DHCP 时,打开系统提供的 IP 设置界面,里面还是显示 手动设置的 IP ,不会切回到“自动获取 IP”。就是下面这个界面。

不会切回上面这个状态。

那么接下来怎么办呢?思考了很久,也没有好的办法,想到前人的程序很多都是通过注册表获取 IP 的。于是试着看看注册表里会不会有新的发现。

打开注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\ ,

找到对应的网卡,里面有不少项目,当然也包括 IP 地址。

其中在从 DHCP 切换为手动设置 IP 时,注册表里会多出一个项目“DisableDhcpOnConnect” ,用来表示下一次网卡连接时关闭 DHCP。试着手动删除这个项目,删除之后系统里的自动获取 IP 也就切回去了,终于找到真神了。

4. 总结

解决问题,多看多思考,细节决定成败。全文完。

软件下载地址:

链接:https://pan.baidu.com/s/1hAgInlc5HDQyNhpmdsiv0g?pwd=w375
提取码:w375

如果你觉得这个软件对你有用还可以打赏,打赏用户将会列入打赏榜单。也接受定制服务。

自动修改网卡 IP的更多相关文章

  1. Linux下修改网卡IP、DNS和网关

    Linux下修改网卡IP和网关 建议通过终端字符方式下来修改 一.修改IP地址 vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOO ...

  2. Linux CentOS修改网卡IP/网关设置

    1. 修改对应网卡IP的配置文件 修改以下内容 2. 修改对应网卡的网关的配置文件 vi /etc/sysconfig/network 修改以下内容 3. CentOS 修改DNS 修改以下内容 4. ...

  3. AIX使用命令修改网卡IP地址,永久生效

    比如修改en0的ip地址.chdev -l en0 -a netaddr=192.168.1.100 -a netmask=255.255.255.0 -a state=up 启用en0 网卡ifco ...

  4. CentOS下使用KVM克隆虚拟机自动修改网卡的MAC地址

    克隆完虚拟机之后Mac地址还保留着母机的配置,此时需要修改成新的Mac地址才能继续,网上一般都是这样的手动操作: 参考:http://blog.51cto.com/freedyong/1361907 ...

  5. 通过一台服务器ssh多台主机远程修改网卡ip

    在多台服务器环境下,更改所有的ip地址,网关,一台一台的登录修改显得复杂繁琐.   知识点: 参考#https://www.cnblogs.com/youngerger/p/9104144.html ...

  6. linux udhcpc 后无法自动设置网卡ip

    arm 主板用 udhcpc 获取租赁的空闲的ip后,并没有直接设置在网卡上. 查了一下相关原因,是因为虽然已经获取了ip, 但是并没有通过脚本去设置这个IP. 在 busybox 里面有相关的脚本要 ...

  7. 一个自动修改本地IP地址的BAT

    set /a num1=%random%%%200+1+1  //生成随机数set ip=192.168.1.//ip 主体set ip1=%ip%%num1% //拼接两部分cmd /c netsh ...

  8. 做一个自动修改本机IP和mac的bat文件

    原文:做一个自动修改本机IP和mac的bat文件 1.ip bat修改理论探讨 前两天我突然萌生了一个念头:能不能做一个小程序来实现自动配置或修改IP和mac,达到一键搞定的目的,这样尤其适合那些带着 ...

  9. [批处理]自动修改本机IP地址

    前言 抱着笔记本经常到处跑的人,今天回宿舍上网,明天去机房上网,后面去办公室上网,每到一个地方,都要更换一次IP网关掩码 如果都是DHCP还好,关键是为了组织为了方便管理这些地方都是使用的静态IP,所 ...

  10. Linux:自动获取静态IP地址,清空iptable,修改selinux脚本

    自动获取静态IP地址,清空iptable,修改selinux脚本 环境:VMware 平台:centos6.8全新 功能: 1)应用ifconfig -a,route -n,cat /etc/reso ...

随机推荐

  1. C4996 scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details

    编译器报错,编译器使用的是Visual Studio2019版本 修改项目属性的检测sdl. 第一步,右键项目--->属性 *第二步,在打开的属性中选择,配置属性-->C/C++---&g ...

  2. RediSearch的简单使用与总结

    前言 之前就有考虑过想要研究下RediSearch,号称高性能全文索引的功能,这几天闲来无事调研了一番. RediSearch 介绍 RediSearch 是 Redis Labs 提供的一款强大且高 ...

  3. WPF自定义控件,如何使得xaml涉及器中的修改能立即反应到预览

    这是我无意中发现的,xaml中设置的是依赖属性而不是包装器,所以我们可以直接在注册依赖属性那里设置回调,触发某个控件重绘,比如本身或父控件重绘. xaml设计器就会实时更新 1 // !!!由于xam ...

  4. containerd 源码分析:启动注册流程

    0. 前言 containerd 是一个行业标准的容器运行时,其强调简单性.健壮性和可移植性.本文将从 containerd 的代码结构入手,查看 containerd 的启动注册流程. 1. 启动注 ...

  5. 【题解】P2627 [USACO11OPEN] Mowing the Lawn G

    [题解]P2627 [USACO11OPEN] Mowing the Lawn G 题目跳转 数据量比较大,暴力肯定是不行的.只能考虑用动态规划的方式来做. 这道题有许多dp设计的思路,这里提供两个: ...

  6. 什么是Token?为什么大模型要计算Token数

    本文分享自华为云社区<[技术分享]什么是Token?为什么GPT基于Token定价>,作者:开天aPaaS小助手Tracy. 在使用LLM大模型时,我们经常会遇到一个关键词,叫:Token ...

  7. matplotlib学习:搞明白plt. /ax./ fig

    原文章一:https://zhuanlan.zhihu.com/p/93423829,原文章二:https://jishuin.proginn.com/p/763bfbd23e20    感谢作者的讲 ...

  8. docker基础使用和资源限制

    为什么使用容器 docker设计目标: 提供简单的应用打包工具 开发人员和运维人员职责逻辑分离 多环境保持一致性 轻量级 kubernetes设计目标: 集中管理所有容器 资源编排 资源调度 弹性伸缩 ...

  9. Mysql 5.7 及以上版本修改密码

    登录数据后.选择 mysql 数据库 use mysql; 修改密码 update user set authentication_string=PASSWORD("mynewpasswor ...

  10. c# Redis缓存的使用和helper类;

    使用背景: 项目中用户频繁访问数据库会导致程序的卡顿,甚至堵塞.使用缓存可以有效的降低用户访问数据库的频次,有效的减少并发的压力.保护后端真实的服务器. 对于开发人员需要方便调用,所以本文提供了hel ...