【バッチ】バッチファイルをダブルクリックで管理者として実行する方法

2018年8月27日
バッチ

バッチファイルを管理者として実行する際に、右クリックから「管理者として実行」を選択するのが手間なのでダブルクリックでできるようにした。

コード

@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度目のバッチファイル実行時にユーザーアカウントと整合性レベルの確認をスキップしている。

参考