バッチファイルで、管理者権限で実行しているかを確認する方法を調べてみた
whoami /groups で確認できるらしい。
Mandatory Label\High Mandatory Level グループがあれば、管理者権限で実行していることになるらしい。
|
@echo off for /f "tokens=1 delims=," %%i in ('whoami /groups /FO CSV /NH') do ( if "%%~i"=="BUILTIN\Administrators" set ADMIN=yes if "%%~i"=="Mandatory Label\High Mandatory Level" set ELEVATED=yes ) if "%ADMIN%" neq "yes" ( echo ユーザがAdministratorsグループに入っていません。 exit /b 1 ) if "%ELEVATED%" neq "yes" ( echo プロセスが管理者権限で実行されていません。 exit /b 2 ) |
レベルを文字列で取得する場合はこんな感じ
|
for /f "tokens=3 delims=\ " %%i in ('whoami /groups^|find "Mandatory"') do set LEVEL=%%i echo 権限=%LEVEL% |
%LEVEL%に実行権限レベルが取得されます。
- high – UACの管理者ユーザーに割り当てられ、盾マーク部分へのアクセスが可能
- medium – UACの一般ユーザーに割り当てられ、俗に言う盾マークがない部分へのアクセスが可能
- low – IEで実行されるプロセスに割り当てられ、テンポラリフォルダへのアクセスのみ可能
- untrusted – Anonymousと同等
- system – LocalSystem等のサービスアカウントに割り当てられる
- trusted – 更新プログラムなどをインストールするプロセスに割り当てられる
メモメモ・・・・