Win10让批处理文件自动获取管理员权限的方法
时间:2021-07-01 10:21:17
帮助过:12人阅读
在Win10系统下进行批处理文件时,你会发现很多批处理文件在运行时都会提示需要管理员权限,这时你就要手动设置以管理员身份运行才能进行操作,这样的半自动化操作实在太烦人了。如果我们能为批处理文件自动添加管理员权限,是不是就快多了?因为这样的话,我们双击运行就可以直接进行操作了。那么,在Win10系统下要如何让批处理文件自动添加管理员权限呢?
步骤如下:
想要给批处理文件自动添加管理员权限并不难,只要使用小编提供的代码就可以轻松实现自动获取权限的功能。把如下代码复制到记事本中,并保存为 .bat 格式即可(文件名可自拟);
- 01:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- 02:: 软媒魔方自动添加批处理文件管理员权限 ::
- 03:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- 04@echo off
- 05CLS
- 06ECHO.
- 07ECHO ================================
- 08ECHO 软媒魔方获取批处理文件管理员权限
- 09ECHO ================================
- 10:init
- 11setlocal DisableDelayedExpansion
- 12set "batchPath=%~0"
- 13for %%k in (%0) do set batchName=%%~nk
- 14set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
- 15setlocal EnableDelayedExpansion
- 16:checkPrivileges
- 17NET FILE 1>NUL 2>NUL
- 18if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )
- 19:getPrivileges
- 20if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
- 21ECHO.
- 22ECHO ********************************
- 23ECHO 请求 UAC 权限批准……
- 24ECHO ********************************
- 25ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
- 26ECHO args = "ELEV " >> "%vbsGetPrivileges%"
- 27ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
- 28ECHO args = args ^& strArg ^& " " >> "%vbsGetPrivileges%"
- 29ECHO Next >> "%vbsGetPrivileges%"
- 30ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
- 31"%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %*
- 32exit /B
- 33:gotPrivileges
- 34setlocal & pushd .
- 35cd /d %~dp0
- 36if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul & shift /1)
- 37:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- 38:: 以下为需要运行的批处理文件代码 ::
- 39:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- 40rem 本行以下可修改为你需要的bat命令(从上面三行冒号开始到下面都可删改)
- 41ECHO 欢迎使用软媒魔方!
- 42ECHO.
- 43pause
复制代码
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: 软媒魔方自动添加批处理文件管理员权限 ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@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 1>NUL 2>NUL
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%" 1>nul 2>nul & shift /1)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: 以下为需要运行的批处理文件代码 ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
rem 本行以下可修改为你需要的bat命令(从上面三行冒号开始到下面都可删改)
ECHO 欢迎使用软媒魔方!
ECHO.
pause