推荐之二(批处理):xp一键更改IP与MAC地址(修复网上关于该问题的错误程序)
2007-07-17 14:13
前一阵子,因为寝室里要不断更换homeshare主机,改IP和MAC成了一项比较麻烦的工序,因此一直想手动编写一个一键更改IP与MAC的批处理文件,查看了诸多网上说法,发现都是抄袭来的,而且并不好用,几经研究,终于有了一点心得,写在这里,希望帮助有需要的网民们~~(注:该文仅针对固定IP类型,其他见文末,总代码见总结)
一、改IP设置
首先是更改本地连接里TCP/IP协议下的IP地址,这个问题比较容易,使用netsh interface ip命令即可完成,该命令介绍如下:
? -显示命令列表
add -向表中添加一个配置项目
delete -从表中删除一个配置项目
dump -显示一个配置脚本
help -显示命令列表
reset -复位 tcp/ip 及相关的组件到到干净的状态
set -设置配置信息
show -显示信息
这里我们只用到set命令
如:netsh interface ip set address "本地连接" static 172.30.40.59 255.255.0.0 172.30.3.21 1
某些机器上名称不是本地连接,而是local address一类的,只要替换上述命令中相关内容即可,IP中三项分别对应IP、掩码、网关,最后的“1”是指默认网关的跃点数,一般为“1”。
这样更改IP工作完成,如想在命令中添加更改DNS命令,见文末
二、改MAC地址
这个问题比较棘手,网上提供的方法都不可靠,看了很多人编写的软件,在改MAC的时候也出现问题,主要是XP系统MAC地址存储方法比较特别,大多数人都想到了用注册表添加的方法,MAC地址通常存储在注册表这一项里:(注:不同机器,存诸地址不同,但都在红色表示的这一项内,如果找不到,就先手动更改MAC,即设备管理器——》网络适配器——》高级——》network address或locad address,在值里面添加任意数字,然后打开注册表搜索这个数字,可以方便的找到network address这一项)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0008
使用reg命令即可,这里仅用到add和delete两个命令,可如下添加:
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0008 /v NetworkAddress /d 00e04d18063e
/v表示新建项,名称为networkaddress,/d表示在该项下添加值,为00e04d18063e
大部分作者都只到这里就结束,殊不知这样改过后要重新启动网卡才可能应用,并且大多数作者对这一操作并没有说明,这样无疑让很多初学者遇到了难题,也让这个命令变得没有意义,其实实现这一命令并不难,微软推出了一个禁用设备的命令,名称为devcon.exe。
思路:用这个命令先将网卡禁用然后再启用,让所添加的注册项升效
微软下载地址为:
http://download.microsoft.com/download/1/1/f/11f7dd10-272d-4cd2-896f-9ce67f3e0240/devcon.exe这个命令很强大,我们只用其中一小部分,其他作用可下载后自己查看。cmd命令提示符下,进入devcon.exe所在目录,运行如下命令
devcon find pci\*
系统会列出机器上所有pci设备及代号,找出你的网卡名称和代号,如:
PCI\VEN_10DE&DEV_0057&SUBSYS_25011565&REV_A3\3&2411E6FE&0&50:NVIDIA NETWORK BUS ENUMERATOR
这便你的网卡,注意蓝色字体为该设备代号,不同机器网卡名称和代号都是不同的,要仔细查找
然后我们便可以利用这个命令来禁用和启用网卡了,具体如下:(devcon命令内容这里略过,可通过help命令查看)
devcon disable *DEV_0057*
devcon enable *DEV_0057*
第一行是禁用网卡,第二行是启用网卡(如用户在使用homeshare,切莫在homeshare未退出的情况下进行禁用和启用网卡操作,会假死的,cpu直接飙到100%,想关都很难)
至此MAC修改完成,如果想还原为原来的MAC地址,可新建一批处理将下列命令用第二行替换,即
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0008 /v NetworkAddress /d 00e04d18063e
替换为:
reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0008 /v NetworkAddress /f
其他命令可不做更改。
三、总结:将以上内容整理,写下如下代码:(@ECHO off 是为了不显示所执行的命令内容,可略去)
@ECHO off
netsh interface ip set address "本地连接" static 219.217.252.22 255.255.255.0 219.217.255.254 1
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0008 /v NetworkAddress /d 00e04d18063e
devcon disable *DEV_0057*
devcon enable *DEV_0057*
!!将以上代码复制到记事本内,格式存诸为*.bat即成功制作了一个批处理文件,以后想改IP和MAC时只要双击一次就行了。(注:需将该批处理文件与devcon.exe放在同一目录下,切记!若想制作还原成原来ip/mac的批处理,只需用reg delete删除networkaddress项即可)
四、文末:(如非固定IP则将netsh一行用以下命令替换)
1.要将指定适配器的静态地址切换为 DHCP 地址,键入以下命令:netsh interface ip set address"本地连接" dhcp
2.更改DNS为192.168.0.1:netsh interface ip set DNS "本地连接" static 192.168.0.1
**!!缺点:该方法虽简单易懂,但执行起来速度并不快,需要看使用者电脑配置而定,其主要原因在于更改IP的命令netsh执行较慢,如有更好修改IP的方法(~我现在还没找到~,已找到,见推荐之三,如果想做个更好的批处理可参考),欢迎留言,我们一起探讨!