[备忘] 如何在批处理中获取调用管理员权限
作者:logger 发布时间:2019-09-30 分类:备忘录
如何在批处理内检测并获取管理员权限运行现有脚本.
该脚本会以标准UAC界面自动提升CMD或BAT文件的运行权限.
只需将该脚本放到你自己的批处理脚本代码之前即可.
代码开始:
@echo off :: BatchGotAdmin :------------------------------------- REM --> 检查权限 >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" REM --> 如果错误标记设置,我们未取得管理员身份. if '%errorlevel%' NEQ '0' ( echo 正在请求管理员权限... 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" :-------------------------------------- --==这里存放你自己的批处理脚本代码==--
原理:该脚本基于VBS调用批处理.它通过企图创建文件夹的方式,检测当前窗口是否拥有管理员权限.一旦发现无法创建文件夹,则调用UAC对话框请求管理员权限,然后关闭没有管理员权限的窗口.该脚本亦可以在任何已经打的管理员命令行内执行.
---
文章引用:
https://stackoverflow.com/questions/1894967/how-to-request-administrator-access-inside-a-batch-file
https://sites.google.com/site/eneerge/scripts/batchgotadmin