管理者として実行しているかを確認するコマンド
コマンドファイルを作成していると、管理者実行必須の場合に確認の記述をします。
その方法が作成者で多様化しています。
ここでは、どのようなものがあるか一部ご紹介いたします。
私がいつも使用しているコマンドです。↓
@echo off for /f "tokens=3 delims=\ " %%A in ('whoami /groups^|find "Mandatory"') do set LEVEL=%%A if "%LEVEL%"=="High" (実行するコマンド)
whoami /groupsで現在のユーザーのグループ メンバーシップ、アカウントの種類、セキュリティ ID (SID)、および属性を表示します。
Mandatory項目がHightになっているか否かで判断します。
管理者の場合はHight、管理者でない場合通常はMediumになります。
そのほかのパターンです。↓
@echo off rem --管理者として実行確認いろいろなパターン-- NET SESSION > NUL 2>&1 openfiles > nul 2>&1 net file > nul 2>&1 whoami /priv | find "SeTakeOwnershipPrivilege" > nul whoami /priv | find "SeLoadDriverPrivilege" > nul if %ERRORLEVEL% neq 0 (実行するコマンド) if not %ERRORLEVEL% neq 0 (実行するコマンド) if %ERRORLEVEL% equ 0 (実行するコマンド) if not %ERRORLEVEL% equ 0 (実行するコマンド)
管理者として実行しているか否かを確認するコマンドと分岐させるifコマンドです。
管理者ではない場合に実行するとエラーレベル0以外となるパターンと管理者実行になっているか否か文字列をさがしてエラーレベルで確認するといういろいろなパターンがあるようです。
分岐するifコマンドもいろいろなパターンで作れます。真の場合と偽の場合を考えあとは好みで作れます。