バッチファイルで、管理者権限で実行しているかを確認する方法


バッチファイルで、管理者権限で実行しているかを確認する方法を調べてみた

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: 22

カテゴリー: Windows, 未分類 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です