バッチの中で管理者権限を確認する

管理者権限が必要な場面

色々とシステムを構築していると、えー、このコマンド管理者権限必要なんだと言ったことに出くわします。私の場合は、リモートデスクトップの有効/無効を切り替えたくてバッチを作ったのですが、レジストリを触る “reg” コマンドが管理者権限が必要でした。他にもたくさんあるかと思います。



管理者権限があるか確認する方法

管理者権限があるかどうかは、管理者権限が必要なコマンドを実行して、そのエラーレベルを確認すると言う回りくどいやりかたで実現できます。↓↓↓ これがサンプルコードです。

openfiles > nul 2>&1
if not %errorlevel% equ 0 (
    echo このバッチは管理者権限で実行してください
    echo 終了します。何かキーを押してください。
    pause > nul
    exit 1
)


200×200 高速大容量レンタルサーバ10G
mixhost

1行目で管理者権限が必要な “openfiles” と言うコマンドを実行しています。実行結果は、nul デバイスに標準出力/標準エラー共にリダイレクトしているので、一切画面には出てきません。終了ステータスが、errorlevel 変数にセットされます。正常に終了した場合は、0。異常終了した場合は “0以外” がセットされます。ここが管理者権限の有無の肝です。

2行目は、openfiles の終了ステータスが 0 以外か確認しています。0 以外であれば 3行目 ~ 6行目が処理されます。

このコードをバッチファイルの先頭に入れておくと、管理者権限の有無が最初に確認され、管理者権限が無ければ echo でメッセージを出して、キー入力待ちにし、キー入力があれば終了ステータス “1” で終了します。

いかがでしょうか、簡単ではありますが、バッチの中で管理者権限を確認する方法でした。