如何使用批处理遍历注册表并批量修改PCI项下所有ConfigFlags值
PCI设备ConfigFlags注册表批量修改批处理脚本
注意事项
- 必须以管理员身份运行该批处理,否则无权限修改HKEY_LOCAL_MACHINE路径下的注册表项
- 操作前建议先备份对应注册表分支,避免误操作,可在CMD执行以下命令导出备份:
reg export "HKLM\SYSTEM\CurrentControlSet\Enum\PCI" pci_reg_backup.reg
完整批处理代码
@echo off setlocal enabledelayedexpansion :: 枚举PCI路径下所有VEN_开头的厂商ID子项 for /f "delims=" %%ven_path in ('reg query "HKLM\SYSTEM\CurrentControlSet\Enum\PCI" ^| findstr /i "VEN_"') do ( :: 枚举当前厂商子项下的所有设备次级子项 for /f "delims=" %%dev_path in ('reg query "%%ven_path"') do ( :: 跳过非设备子项的根路径输出 echo "%%dev_path" | findstr /i "VEN_.*\\DEV_" >nul 2>&1 if !errorlevel! neq 0 continue :: 检查子项中是否存在值为0x20的ConfigFlags项 reg query "%%dev_path" /v ConfigFlags /t REG_DWORD /d 0x20 >nul 2>&1 if !errorlevel! equ 0 ( :: 强制修改ConfigFlags为0x0 reg add "%%dev_path" /v ConfigFlags /t REG_DWORD /d 0x0 /f >nul 2>&1 echo 已修改:%%dev_path\ConfigFlags ) ) ) echo 所有匹配项修改完成,按任意键退出 pause >nul endlocal
代码说明
- 两层循环自动枚举所有VEN_ID子项和动态命名的次级设备子项,不需要提前知道具体的厂商或设备ID
- 提前做值匹配校验,仅修改值为
dword:00000020的ConfigFlags项,不会影响其他正常配置 - 强制修改参数
/f不需要用户二次确认,批量处理效率更高
内容的提问来源于stack exchange,提问作者Marlin Grey
相关产品推荐
相关产品推荐

