[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[注册表类] [已解决]用批处理修改计算机的有线网卡MAC地址,注册表项目如何判断?

http://blog.csdn.net/crane35/article/details/5267912


开始――搜索中输入regedit,用管理员权限打开注册表编辑器,依次展开HKEY_LOCAL_MACHINESYSTEM -> CurrentControlSet -> Control -> Class,在该分支下搜索刚才复制的GUID,找到后看待该分支下面还有0000、0001、0002、……这样的几个分支,一个一个点开看看,当看到右面"DriverDesc"项的值和设备管理器里要修改的网卡名一致的时候(比如我的是"Intel(R) PRO/100 VE Network Connection")就找到地方了。先记住该路径,例如我找到的是HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Class/{4D36E972-E325-11CE-BFC1-08002BE10318}/0004


由于修改网卡MAC地址时要直接操作注册表,但Windows不会实时监控注册表中该项的变化,因此必须先禁用、启用网卡一次,让Windows使用新的地址,下面是修改步骤:

修改网卡MAC地址:
  1. rem 先禁用网卡
  2. netsh interface set interface "本地连接" disable
  3. rem 使用reg add命令修改物理地址
  4. reg add HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Class/{4D36E972-E325-11CE-BFC1-08002BE10318}/0004 /v NetworkAddress /d 要修改的值 /f
  5. rem 再启用网卡
  6. netsh interface set interface "本地连接" enable
复制代码
还原网卡MAC地址:
  1. netsh interface set interface "本地连接" disable
  2. rem 使用reg delete命令删除NetworkAdress项,也就还原的原MAC地址
  3. reg delete HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Class/{4D36E972-E325-11CE-BFC1-08002BE10318}/0004 /v NetworkAddress /f
  4. netsh interface set interface "本地连接" enable
复制代码
试验证明,上述方法是可行的。

我是打算用批处理修改计算机的有线网卡MAC地址(一般只有1个有线网卡,无线网卡可能有也可能没有)

问题来了,如何用bat批处理命令,判断当前有线网卡mac地址的修改,是在注册表哪个路径下(有的电脑可能在004下,也有的可能在007下)?
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

这个的关键就是有线网卡的序号。

需要在4D36E972-E325-11CE-BFC1-08002BE10318键值下一个个的找

TOP

不同电脑的有线网卡mac地址,注册表里面对应的位置不同


批处理能否实现智能判断呢?

TOP

多谢版主。

但你的代码,如何配合1楼的那个bat文件使用?

给个提示啊,谢谢

TOP

直接运行4楼的批处理。

结果如下:

TOP

多谢。

rem 禁用网卡
netsh interface set interface "本地连接" disable

rem 启用网卡
netsh interface set interface "本地连接" enable

这2个操作,好像没有效果(用ipconfig/all,并没有显示修改成功)。

我手动在设备管理器里面,先禁用、再启用有线网卡,mac地址用ipconfig/all,才显示修改成功。

有没有别的批处理方法,让有线网卡的mac地址显示修改后的?

TOP

解决了。
  1. rem 单网卡(Intel 21140-Based PCI Fast Ethernet Adapter (Generic))、XPSP3下测试通过
  2. @echo off
  3. pushd "%~dp0\"
  4. SetLocal EnableDelayedExpansion
  5. rem 下面两行请自行修改
  6. set NetConnectionID=本地连接
  7. set NetworkAddress=002170BC708E
  8. set Fullkey="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class"
  9. rem 获取“本地连接”的设备名称
  10. for /f "delims=" %%a in ('wmic nic where "netconnectionid='%NetConnectionID%'" get name /value') do call set %%a>nul 2>nul
  11. regedit.exe /e %temp%\clsid.reg %Fullkey%
  12. rem 分析注册表
  13. echo.正在分析注册表文件...
  14. for /f "delims=:" %%a in ('Type "%temp%\clsid.reg" ^| findstr /ni /c:"%name%"') do (
  15.         for /l %%i in (100,-1,1) do (
  16.                 set /a Line = %%a - %%i
  17.                 for /f "tokens=2 delims=:" %%b in ('Type "%temp%\clsid.reg" ^| findstr /n .* ^| findstr /b !Line!:') do (
  18.             echo.%%b | findstr /i %Fullkey% >nul 2>nul
  19.                         if !errorlevel! == 0 set CLSID=%%b
  20.                 )
  21.         )
  22. )
  23. rem 使用reg add命令修改物理地址
  24. reg add "%CLSID:~1,-1%" /v NetworkAddress /d %NetworkAddress% /f
  25. rem 禁用网卡
  26. for /f "tokens=2 delims=&" %%a in ('devcon find pci\*^|findstr /c:"Fast Ethernet"') do (
  27.   devcon DISABLE *%%a*>NUL
  28. )
  29. rem 启用网卡
  30. for /f "tokens=2 delims=&" %%a in ('devcon find pci\*^|findstr /c:"Fast Ethernet"') do (
  31.   devcon ENABLE *%%a*>NUL
  32. )
  33. erase "%temp%\clsid.reg"
  34. exit
复制代码
xp sp3系统下测试通过。


其中的devcon从这里下载。
http://bbs.bathome.net/thread-743-1-1.html

TOP

好的。。。。。

TOP

返回列表