バッチファイルを管理者権限で開く、実行するコマンド[管理者への昇格]
Windows OSを搭載したPCでは、コマンドプロンプトにコマンドを入力し操作を行う工程を、.bat形式で保存することでバッチファイルの作成が可能です。[バッチファイルの基本的な使い方]
本サイトでは、ITエンジニアとして主にネットワークの分野で技術解説を行っていますが、ネットワークの構築やテストの際に便利なバッチファイルの作成方法や、コマンドを紹介してきました。
Route addコマンドにてPCにルーティング経路を設定する方法
パソコンのNTPサーバ機能をバッチファイルにて有効・無効の切り替えを行う方法を紹介しています。
どちらのコマンドにも共通しているのが、管理者権限でないと実行できないコマンドを使用しているという点です。
管理者権限でのみ実行可能なバッチファイル
コマンドプロンプトで実行するコマンドでは、「管理者として実行」を選択し起動したコマンドプロンプトでのみ実行可能なコマンドが多々存在します。
管理者権限のない通常のコマンドプロンプトで、権限の必要なコマンドを入力した場合は、エラーが表示され実行することができません。
したがってバッチファイルの内容に、管理者権限が必要なコマンドが含まれている場合は下記のように宇バッチファイル自体を「管理者として実行」にて実行する必要があります。
管理者として実行をしなかった場合は下記の画像のように「要求された操作には、権限の昇格が必要です。管理者として実行してください。」というエラーが表示され、実行に失敗してしまいます。
管理者としての実行が必要なバッチを開くバッチを作る
上記のバッチファイルを右クリックし「管理者として実行」にて開く方法で、問題なく実行は可能ですが、その操作をも省略したい場合も多々あるかと思います。
その対処方法として「管理者としての実行が必要なバッチA」を「バッチBにて管理者として実行する」という方法があります。
この場合、最初に実行するのは、理者として実行する必要のない「バッチB」となります。
この方法を利用する主な場面は以下のような、バッチ作成者が直接実行を行わない状況で便利です。
- バッチファイル作成者と実行者が異なる場合
- 時間やPC起動時、など自動で実行される場合
バッチファイルを、ユーザなど多数の人に実行を任せる場合や、ソフトやツールにて時間指定・PC起動時などといったトリガーにて自動実行を行う場合には、右クリックして「管理者として実行」ができないため、他のバッチにて実行する方法を解説します。
[runas]コマンドを使用してバッチファイルを実行
別ファイルを実行するコマンドのオプションとして、[runas]コマンドというものが存在します。
下記のように実行するファイル名の後につけることで動作します。
powershell start-process [実行するバッチのパス][バッチファイル名] -Verb runas
例として下記の「Windows Firewallの有効・無効をバッチファイルで操作する方法」を解説しているページで使用している、バッチファイルでコマンドの使用方法を解説します。
本来の目的である「WinFWを無効にするバッチ」である「バッチA」と
[runas]を使用し「バッチA」を管理者として実行する「バッチB」を作成します。
例として、実際にパスやファイル名を環境に当てはめてみると、下記のようになります。
・「C:\Users\User\Desktop\BAT」という場所にある「WinFW_OFF.bat」というバッチファイルを管理者として実行する際
powershell start-process C:\Users\User\Desktop\BAT\WinFW_OFF.bat -Verb runas
以上のように、ユーザや他人に配布し実行してもらう際や、自動での実行の仕組みを採用する場合はこの「バッチB」を使用するといった対応で、他ファイルを管理者として実行させることができます。