バッチファイルで、管理者権限で実行しているかを確認する方法を調べてみた
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 – 更新プログラムなどをインストールするプロセスに割り当てられる
メモメモ・・・・
Views: 20