管理者権限が必要な場面
色々とシステムを構築していると、えー、このコマンド管理者権限必要なんだと言ったことに出くわします。私の場合は、リモートデスクトップの有効/無効を切り替えたくてバッチを作ったのですが、レジストリを触る “reg” コマンドが管理者権限が必要でした。他にもたくさんあるかと思います。
管理者権限があるか確認する方法
管理者権限があるかどうかは、管理者権限が必要なコマンドを実行して、そのエラーレベルを確認すると言う回りくどいやりかたで実現できます。↓↓↓ これがサンプルコードです。
openfiles > nul 2>&1 if not %errorlevel% equ 0 ( echo このバッチは管理者権限で実行してください echo 終了します。何かキーを押してください。 pause > nul exit 1 )
1行目で管理者権限が必要な “openfiles” と言うコマンドを実行しています。実行結果は、nul デバイスに標準出力/標準エラー共にリダイレクトしているので、一切画面には出てきません。終了ステータスが、errorlevel 変数にセットされます。正常に終了した場合は、0。異常終了した場合は “0以外” がセットされます。ここが管理者権限の有無の肝です。
2行目は、openfiles の終了ステータスが 0 以外か確認しています。0 以外であれば 3行目 ~ 6行目が処理されます。
このコードをバッチファイルの先頭に入れておくと、管理者権限の有無が最初に確認され、管理者権限が無ければ echo でメッセージを出して、キー入力待ちにし、キー入力があれば終了ステータス “1” で終了します。
いかがでしょうか、簡単ではありますが、バッチの中で管理者権限を確認する方法でした。