如何创建Admin权限Bat批量设置指定目录及子目录exe的管理员兼容模式
批量修改所有驱动器中"test files"目录下EXE的管理员兼容性设置
当然可以实现!你的思路方向是对的——通过注册表添加兼容性标记,但现有脚本有几个小瑕疵,调整后就能自动遍历所有驱动器里的test files目录,批量处理所有EXE文件。
先说说你现有脚本的问题:
- 硬编码了
J:test files\路径,没法自动处理其他驱动器 - 路径写法有误,应该是
J:\test files\(缺少根目录的反斜杠) - 必须确保脚本以管理员权限运行,否则
reg add会因权限不足失败
改进后的完整脚本
@echo off setlocal enabledelayedexpansion :: 遍历所有本地驱动器(跳过WMIC输出的表头行) for /f "skip=1 tokens=1" %%D in ('wmic logicaldisk get caption') do ( :: 检查当前驱动器是否存在目标目录 if exist "%%D\test files\" ( echo 正在处理 %%D 驱动器下的 "test files" 目录... :: 递归遍历目录下所有.exe文件 for /r "%%D\test files\" %%A in (*.exe) do ( :: 写入注册表兼容性设置,/f强制覆盖已有项 reg add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "%%~fA" /d "RUNASADMIN" /f >nul :: 实时反馈处理结果 if !errorlevel! equ 0 ( echo ✅ 已设置管理员权限: %%~fA ) else ( echo ❌ 设置失败: %%~fA ) ) ) ) echo. echo 所有目录处理完成! pause
关键细节说明
- 遍历所有驱动器:用
wmic logicaldisk get caption获取本地所有盘符,自动排查每个驱动器里的test files目录 - 完整路径处理:
%%~fA确保获取EXE文件的绝对路径,避免注册表路径出错 - 权限与静默处理:
/f参数强制覆盖已有设置,>nul屏蔽reg命令的默认输出,让结果更清晰 - 实时反馈:通过
errorlevel判断是否设置成功,方便你快速排查问题
使用注意事项
- 必须以管理员身份运行:右键点击bat文件,选择「以管理员身份运行」,否则没有权限修改注册表
- 用户范围:当前脚本修改的是当前用户的设置(HKCU路径),如果要对所有用户生效,需要把注册表路径改为
HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers,但这需要更高的系统权限 - 特殊程序:部分程序可能自带兼容性保护,或者不支持管理员运行,这类文件会显示「设置失败」,需要手动检查
内容的提问来源于stack exchange,提问作者skylinekiller
相关产品推荐
相关产品推荐

