bat批处理脚本自动提权

Hexa 教程 发布于 20 分钟前 4 次阅读


为了方便通过脚本批处理某些程序时,要操作系统内容需要管理员权限,通过添加一个前置条件检测并请求UAC提权,避免在需要管理器权限时没有授权导致执行失败

@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
    echo Requesting administrator privileges...
    goto UACPrompt
) else (
    goto gotAdmin
)

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
    "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
    pushd "%CD%"
    CD /D "%~dp0"

<需要执行的命令>
pause

使用方法:

  1. 将上面的代码复制到文本编辑器中
  2. 保存为 xxx.bat 文件
  3. 将此文件放在与 你需要执行的程序 相同的目录中
  4. 双击运行
  5. 它会自动检测是否需要管理员权限
  6. 如果需要,会弹出UAC提示请求管理员权限
  7. 获得权限后,会在当前目录执行命令

这样就不需要手动右键选择"以管理员身份运行"了。