必须显式请求管理员权限才能在开启uac的windows中运行需提权的批处理,推荐方法一是批处理内嵌提权逻辑,方法二是快捷方式设“以管理员身份运行”,方法三是powershell一行命令启动,方法四是任务计划程序静默提权。
在开启 uac 的 windows 系统中运行批处理文件,必须显式请求管理员权限——系统不会自动提升,也不会绕过 uac 提示。关键不是“关闭uac”,而是让批处理主动触发合法的提权流程。下面几种方法都兼容 windows 10/11,且不依赖修改系统安全策略。
方法一:批处理内嵌提权逻辑(推荐)
这是最干净的方式——无需额外快捷方式或注册表改动,单个 .bat 文件即可自启动提权。
- 将以下代码复制到你的批处理文件开头(确保第一行是
@echo off之前或之后紧邻位置); - 脚本会先检测权限,若非管理员则生成临时 VBS 并调用
ShellExecute弹出标准 UAC 对话框; - 用户点“是”后,同一命令窗口以高权限重启自身,后续命令正常执行。
注意:不要手动双击运行该 .bat —— 必须通过它自己触发提权,否则会卡在检测环节。
方法二:用快捷方式包装并设为“以管理员身份运行”
适合不想改动原始脚本、或需分发给他人使用的场景。
- 右键桌面 → 新建 → 快捷方式;
- “请键入对象的位置”填:
cmd.exe /c "D:\your\script.bat"(路径替换成实际位置); - 命名后右键该快捷方式 → 属性 → “快捷方式”选项卡 → “高级” → 勾选“用管理员身份运行”;
- 以后双击这个快捷方式,就会先弹 UAC,再执行脚本。
⚠️ 注意:不能直接对 .bat 文件右键设“兼容性→以管理员运行”,Windows 不支持对批处理文件本身做此设置。
方法三:通过 PowerShell 一行命令启动
适合临时调试或集成到其他自动化流程中。
- 打开任意 PowerShell(无需提前提权);
- 运行:
Start-Process cmd.exe -ArgumentList "/c `"$env:USERPROFILE\Desktop\test.bat`"" -Verb RunAs; - 路径中的反引号和双引号要保留,用于正确处理含空格路径;
- 会弹出 UAC,确认后以管理员身份运行 cmd 并执行指定批处理。
方法四:任务计划程序静默提权(进阶)
适用于需要登录即运行、或定时执行的管理任务,可配置为“最高权限”且不显示窗口。
- 打开“任务计划程序” → 右侧“创建任务”(不是基本任务);
- “常规”页勾选“使用最高权限运行”,取消勾选“仅当用户登录时运行”(按需);
- “操作”页添加新操作:启动程序填
cmd.exe,参数填/c "D:\path\to\script.bat"; - “触发器”页设置时机(如“登录时”或“按计划”);
- 保存后,可通过命令
schtasks /run /tn "YourTaskName"手动触发,无需 UAC 弹窗。
⚠️ 注意:首次创建仍需一次 UAC 授权,但后续运行不再提示(前提是任务配置为“不管用户是否登录都要运行”且保存了凭据)。











