【バッチ】バッチファイルをダブルクリックで管理者として実行する方法
バッチファイルを管理者として実行する際に、右クリックから「管理者として実行」を選択するのが手間なのでダブルクリックでできるようにした。
コード
@echo off
if "%1" equ "dummy" goto run_script
for /f "tokens=1 delims=," %%i in ('whoami /groups /FO CSV /NH') do (
if %%i=="BUILTIN\Administrators" set is_admin=yes
if %%i=="Mandatory Label\High Mandatory Level" set is_high_mandatory_level=yes
)
if "%is_admin%" equ "yes" if "%is_high_mandatory_level%" equ "yes" goto run_script
powershell -Command Start-Process -Verb runas "%0" -ArgumentList "dummy"
exit /B 0
:run_script
rem 管理者として実行したい処理
説明
まずユーザアカウントがAdministratorsグループでかつ、整合性レベルがHighであるかを確認する。この条件を満たす場合は管理者と見なし、そのまま処理を続行する。
条件を満たさない場合はPowerShellで管理者として同じバッチファイルを実行させ、処理を中断する。
また、PowerShellで実行する際にはdummy
という引数を持たせ、2度目のバッチファイル実行時にユーザーアカウントと整合性レベルの確認をスキップしている。