::作者:落梧涼
::鏈接:https://www.zhihu.com/question/34541107/answer/154430381
::來源:知乎
::著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
@echo off
title 獲取管理員權限
mode con cols=100 lines=20
color 3f
:: 開始獲取管理員權限
setlocal
set uac=~uac_permission_tmp_%random%
md "%SystemRoot%\system32\%uac%" 2>nul
if %errorlevel%==0 ( rd "%SystemRoot%\system32\%uac%" >nul 2>nul ) else (
echo set uac = CreateObject^("Shell.Application"^)>"%temp%\%uac%.vbs"
echo uac.ShellExecute "%~s0","","","runas",1 >>"%temp%\%uac%.vbs"
echo WScript.Quit >>"%temp%\%uac%.vbs"
"%temp%\%uac%.vbs" /f
del /f /q "%temp%\%uac%.vbs" & exit )
endlocal
:: 完成獲取,下面可以開始寫你自己的代碼了
echo.
echo 原理:先嘗試在系統目錄下臨時新建一個文件夾,若已獲取管理員權限或是運行在XP等不需要管理員權限的
echo 老系統時,是可以新建成功的,此時只需刪除這個臨時新建的文件夾就好了,否則通過創建一個臨時
echo vbs腳本獲取管理員權限,然后再刪除這個臨時vbs腳本文件。
echo.
echo 提示:當獲取管理員目錄后,你的批處理運行目錄會發生變化,為保證目錄准確,
echo 可通過 cd 切換目錄,例“cd /d %%~dp0”切換回批處理所在目錄
echo.
echo 當前運行目錄: %cd%\
echo 批處理所在目錄:%~dp0
echo.
echo 例:切換回批處理所在目錄
echo cd /d %%~dp0
echo.
cd /d %~dp0
echo 當前運行目錄: %cd%\
echo 批處理所在目錄:%~dp0
::此處添加需要提權的命令
pause
exit