很多批处理文件在运行时都需要管理员权限,然而这些程序往往需要用户手动以管理员身份运行才能正常运作,这种半自动化设定事实上还是比较麻烦的,要是能够双击运行直接就带管理员权限岂不是更放心?其实这也不难,使用我们提供的代码就可以轻松实现自动获取权限的功能。Win7/Win8.1/Win10各版本均可使用。
批处理文件:点击下载
把如下代码(分割线之间)复制到记事本中,并保存为 .bat 格式即可(文件名可自拟):
分割线
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: 软媒魔方自动添加批处理文件管理员权限 ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
CLS
ECHO.
ECHO ================================
ECHO 软媒魔方获取批处理文件管理员权限
ECHO ================================
:init
setlocal DisableDelayedExpansion
set batchPath=%~0
for %%k in (%0) do set batchName=%%~nk
set vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs
setlocal EnableDelayedExpansion
:checkPrivileges
NET FILE 1NUL 2NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )
:getPrivileges
if '%1'=='ELEV' (echo ELEV shift /1 goto gotPrivileges)
ECHO.
ECHO ********************************
ECHO 请求 UAC 权限批准
ECHO ********************************
ECHO Set UAC = CreateObject^(Shell.Application^) %vbsGetPrivileges%
ECHO args = ELEV %vbsGetPrivileges%
ECHO For Each strArg in WScript.Arguments %vbsGetPrivileges%
ECHO args = args ^ strArg ^ %vbsGetPrivileges%
ECHO Next %vbsGetPrivileges%
ECHO UAC.ShellExecute !batchPath!, args, , runas, 1 %vbsGetPrivileges%
%SystemRoot%\System32\WScript.exe %vbsGetPrivileges% %*
exit /B
:gotPrivileges
setlocal pushd .
cd /d %~dp0
if '%1'=='ELEV' (del %vbsGetPrivileges% 1nul 2nul shift /1)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: 以下为需要运行的批处理文件代码 ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
rem 本行以下可修改为你需要的bat命令(从上面三行冒号开始到下面都可删改)
ECHO 欢迎使用软媒魔方!
ECHO.
pause
分割线
以上代码就是为你的bat内容获取管理员权限用的,加在你的代码之前就可以用了。运行效果如下:
这个代码也支持Win7/Win8.1系统,效果如下(Windows7为例):