バッチファイル実行時UAC昇格ダイアログを出す方法
実行時に管理者権限がないと失敗するバッチファイルを、今までは 右クリック→管理者として実行でやってました。
が、どうにも面倒くさいのでUACの権限昇格を外部プログラムなしで何とかできないか探したところ こちら を見つけたので、メモとして残します
以下コード
@echo off
REM Auto check & get admin rights
CLS
:checkPrivileges
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )
:getPrivileges
if '%1'=='ELEV' (shift & goto gotPrivileges)
ECHO.
ECHO ***********************************
ECHO Invoking UAC to escalate privilege
ECHO ***********************************
setlocal DisableDelayedExpansion
set "batchPath=%~0"
setlocal EnableDelayedExpansion
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs"
ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs"
"%temp%\OEgetPrivileges.vbs"
exit /b
:gotPrivileges
::::::::::::::::::::::::::::
::START
::::::::::::::::::::::::::::
setlocal & pushd .
REM Write your batch script from here
cmd
これで、バッチファイル実行時にUACの昇格ダイアログが立ち上がったあとで、バッチファイルの処理が始まります