很多批處理文件在運行時都需要管理員權限,然而這些程序往往需要用戶手動以管理員身份運行才能正常運作,這種“半自動化”設定事實上還是比較麻煩的,要是能夠雙擊運行直接就帶管理員權限豈不是更放心?
把如下代碼(分割線之間)復制到記事本中,並保存為.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 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%System32WScript.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
————————— 分割線 —————————
以上代碼就是為你的bat內容獲取管理員權限用的,加在你的代碼之前就可以用了。運行效果如下:
▲ 圖片說明:如果你的系統開啟了UAC,那麼就需要運行後批准一下(別嫌麻煩,最好開啟UAC,比較安全)
▲ 圖片說明:運行示例(有小伙伴嫌CMD丑,所以你可以在屬性→顏色中調下背景透明度,再換個喜歡的壁紙……❤節日快樂❤ )
這個代碼也支持Win7/Win8.1系統,效果如下(Windows7為例):
▲圖片說明:Win7的CMD還沒法設置透明背景
復制代碼還是比較麻煩,你可以直接下載上述制作好的文件:http://pan.baidu.com/s/1eSpzkky