做一个自动修改本机IP和mac的bat文件
1、ip bat修改理论探讨
前两天我突然萌生了一个念头:能不能做一个小程序来实现自动配置或修改IP和mac,达到一键搞定的目的,这样尤其适合那些带着笔记本到处跑的商务人员,于是我首先想到了bat处理。
查阅资料后发现修改iP有现成的命令,但是修改mac相对麻烦一些,需要智能地修改注册表。
修改ip命令如下:
netsh interface ip set address name="本地连接" source=static addr=202.200.155.129 mask=255.255.255.0
netsh interface ip set address name="本地连接" gateway=202.200.155.254 gwmetric=1
netsh interface ip set dns name="本地连接" source=static addr=202.200.144.2 register=PRIMARY
netsh interface ip add dns name="本地连接" addr=61.163.1.4 index=2
netsh interface ip set wins name="本地连接" source=static addr=none
将以上代码相关ip配置修改为你自己的配置,保存到记事本文件,后缀名改为bat,运行即可。
注意:本地连接”必须与你的本地连接名称相同,gwmetric=1必须有,否则有语法错误。
自动获取IP命令如下:
netsh interface ip set address name="本地连接" source=dhcp
netsh interface ip set dns name="本地连接" source=dhcp
同样保存为bat文件,即可运行设置。
然而,以上方法还不够完美,当不同用户使用这段代码时,用户需要亲自修改这些代码来配置自己的IP,所以我们考虑:能不能把IP的相关配置保存的一个文件里边,然后由bat代码解释执行呢?这样的话,用户只需要修改ip配置文件,bat程序文件便可自动解释执行。答案是肯定的,我们可以这样实现:
运行windows cmd命令,输入下命令即可将你现在的IP配置保存到文件里边:
netsh -c interface dump > c:/myipconfig/ip1.txt
改命令自动将你现有的ip配置保存到 c:/myipconfig/ip1.txt,此时你可以打开查看其。注意:‘>’为输入文件符号
然后,我们可以通过命令:netsh -f c:/myipconfig/ip1.txt 将ip1.txt保存的ip配置设置到本机。
2、mac bat 修改理论探讨
到目前为止,有很多人坚信mac地址不可能被修改,他们认为mac是全球唯一的地址,修改了岂不是乱套了吗?而且硬件厂商也不容许你修改的,这里我要做出解释:在windows平台上,所谓的mac地址在通信时某台机子的mac地址是多少是由windows说了算的,windows在通信时是在在注册表里边查找本机的mac地址的。所以我们所谓的修改mac地址也只是在注册表中修改,没有对网卡进行实际的修改,当你将mac设置为disable的时候,mac就自动回到了网卡的mac了。顺便说一句,我们为什么要修改mac呢?是因为有些上网账号和mac绑定到了一起,在该账号下只认初始化的那个mac。另外,再说一个奇怪的现象,在同一个集线器/交换机下,将所有机器IP地址,mac修改成一样,照样可以上网,我不清楚这是windows的一个bug,还是它的一个功能。
言归正传,我们如何做bat能够在注册表中修改mac呢?通过网上查阅资料其理论方法如下:
Windows2000/XP 的修改
1)在 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Class/{4D36E972-E325-11CE-BFC1-08002BE10318}/0000 、 0001 、 0002 等主键下,查找 DriverDesc ,内容为你要修改的网卡的描述,如“ Realtek RTL8029(AS)-based PCI Ethernet Adapter ”。
2)如果在0001下找到了1中的DriverDesc ,在其下,添加一个字符串,命名为 NetworkAddress ,其值设为你要的 MAC 地址(注意地址还是连续写)。如: 00E0DDE0E0E0 。
3)然后到其下 Ndi/params 中添加一项名为 NetworkAddress 的主键,在该主键下添加名为 default 的字符串,其值是你要设的 MAC 地址,要连续写,如: 000000000000 。(实际上这只是设置在后面提到的高级属性中的“初始值”,实际使用的 MAC 地址还是取决于在第 2 点中提到的 NetworkAddress 参数,这个参数一旦设置后,以后高级属性中的值就是 NetworkAddress 给出的值而非 default 给出的了。)
4)在 NetworkAddress 的主键下继续添加名为 ParamDesc 的字符串,其作用为指定 NetworkAddress 主键的描述,其值可自己命名,如“ Network Address ”,这样在网卡的高级属性中就会出现 Network Address 选项,就是你刚在注册表中加的新项 NetworkAddress ,以后只要在此修改 MAC 地址就可以了。继续添加名为 Optional 的字符串,其值设为“ 1 ”,则以后当你在网卡的高级属性中选择 Network Address 项时,右边会出现“不存在”选项。
5)重新启动你的计算机,打开网络邻居的属性,双击相应网卡项会发现有一个 Network Address 的高级设置项,可以用来直接修改 MAC 地址或恢复原来的地址(选中不存在)。
根据这个方法,我们可以做一个.reg文件或者.bat文件来操作注册表,但是这样相对麻烦一些。这里我们使用第三方软件smac 1.0,注意:只能用1.0,其他高级版本不支持命令行参数,也就不能做bat文件了。
将smac.exe下载下来,copy到你的某个目录如:c:/myipconfig
然后我们利用命令 smac -ModifyMAC 0 000D45748512 其中0代表第0张网卡
3、一键修改IP及mac bat实现
根据以上理论,我们便可实现了
1)利用命令netsh -c interface dump > c:/myipconfig/ip1.txt将ip配置格式文件保存到ip1.txt中,打开ip1.txt修改相关配置信息为你的目标配置信息。
2)手动将目标mac信息保存到mac.txt中
3) 在本目录下新建记事本保存如下命令到bat中即可:
@echo off
echo 实验室IP配置
echo fanston(fzd)制作,减轻你在实验室到宿舍频繁修改ip苦恼
echo 提示:请确保您的网卡名称为"本地连接"
pause
echo 正在设置ip dns ...
netsh -f ip1.txt
echo IP dns设置完毕!
echo 正在设置mac
for /f "delims=" %%i in ('find "0" "mac.txt"')do set gmac=%%i
smac -ModifyMAC 0 %gmac%
echo mac设置完毕!
echo 配置完毕!
echo 有时需要禁用,并启用一下本地连接才可生效(一般情况不需要)
pause
当ip发生变化时,用户直接从ip1.txt和mac.txt 中配置相关信息即可,实现了代码无关性。
所有工具及代码全部在我分享的资源中,有兴趣的朋友可以下载试用!
做一个自动修改本机IP和mac的bat文件的更多相关文章
- [批处理]自动修改本机IP地址
前言 抱着笔记本经常到处跑的人,今天回宿舍上网,明天去机房上网,后面去办公室上网,每到一个地方,都要更换一次IP网关掩码 如果都是DHCP还好,关键是为了组织为了方便管理这些地方都是使用的静态IP,所 ...
- 【网络编程/C++】修改本机ip地址
昨天学会了编程实现获取本地网卡信息,今天再接再砺学会了修改本机ip地址.其实原理很简单就是用c++调用一下dos命令而已,不得不说,dos命令实在是太强大了,当然听说还有种修改注册表的方法,不过没有试 ...
- Linux 获取本机IP、MAC地址用法大全
getifaddrs()和struct ifaddrs的使用,获取本机IP ifaddrs结构体定义如下: struct ifaddrs { struct ifaddrs *ifa_next; /* ...
- 获取本机IP、mac地址、计算机名
python获取本机IP.mac地址.计算机名 在python中获取ip地址和在php中有很大不同,我们先来看一下python 获得本机MAC地址: >>> import uuid ...
- Micropython 如何用Turnipbit做一个自动浇水装置
最近在研究Turnipbit这块板子,打算是连接一个摄像头模块,正在实验练习中,(祝自己早日弄好)上篇文章我们讲了用Turnipbit连接LCD5110显示英文词句,前几天给家里花浇水的时候发现花招了 ...
- windows下用C++修改本机IP地址
两种方法 第一种.使用DOS命令(即时生效) 第二种.修改注册表(重启生效) 1.打开SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards ...
- 做一个懒COCOS2D-X程序猿(一)停止手打所有cpp文件到android.mk
前言:”懒”在这里当然不是贬义词,而是追求高效,拒绝重复劳动的代名词!做一个懒COCOS2D-X程序猿的系列文章将教会大家在工作中如何偷懒,文章篇幅大多较短,有的甚至只是几行代码,争取把懒发挥到极致! ...
- python获取本机IP、mac地址、计算机名
在python中获取ip地址和在php中有很大不同,在php中往往比较简单.那再python中怎么做呢? 我们先来看一下python 获得本机MAC地址: 1 2 3 4 import uuid de ...
- JAVA获取本机IP和Mac地址
在项目中,时常需要获取本机的Ip或是Mac地址,进行身份和权限验证,本文就是通过java代码获取ip和Mac. package com.svse.query;import java.net.In ...
随机推荐
- _tcscat在Debug和Release根据问题
背景: 因此,例如,在下面的代码段,作用是得到的路径当前程序(C:\work\A.exe),然后"A.exe"拆除,组装的"C:\work\inject.dll" ...
- hive字符串函数
1. 字符串长度函数:length 语法: length(string A) 返回值: int 说明:返回字符串A的长度 举例: hive> select length('abcedfg') f ...
- IE8,IE9,IE10,FireFox 的CSS HACK
#employeesView { top: 732px; //所有浏览器 top: 730px\9;//所有IE浏览器 } @media all and (min-width:0) { #employ ...
- 深入理解Tomcat系列之二:源码调试环境搭建(转)
前言 最近对Tomcat的源码比较感兴趣,于是折腾了一番.要调试源码首先需要搭建环境,由于参考了几篇帖子发现都不怎么靠谱,最后还是折腾出来了,然而却花了足足一天的时间去搭建这个环境.发现都不是帖子的问 ...
- Redis 安装与简单示例(转)
本文转载自:http://www.cnblogs.com/kissdodog/p/3570984.html Redis的安装 Redis下载地址如下:https://github.com/dmajki ...
- Linux下SVN安装配置全程实录(转)
一.安装SVN默认安装到/usr/local/bin下面 二.创建仓库 svnadmin create /home/svnrepo /root/svnrepo为所创建仓库的路径,理论上可以是任何目录 ...
- httl开源JAVA模板引擎,动态HTML页面输出
HTTL(Hyper-Text Template Language)是一个适用于HTML输出的开源JAVA模板引擎,适用于动态HTML页面输出,可用于替代JSP页面,它的指令类似于Velocity. ...
- HDU 2829 Lawrence(动态规划-四边形不等式)
Lawrence Problem Description T. E. Lawrence was a controversial figure during World War I. He was a ...
- FragmentCustomAnimation实现Fragment的界面切换
1.知识点:FragmentCustomAnimation 2.演示样例:来自于官网演示样例的简化,这样更方便于学习该知识点. 本演示样例的源代码下载地址为:http://download.csdn. ...
- 使用SVNkit删除版本库的文件
源网址:http://wiki.svnkit.com/Committing_To_A_Repository Editing Operation: commiting to a repository T ...