バッチファイルが管理者特権のコマンドプロンプトから開始されたか、管理者として開始されたかを確認すると便利な場合があります。私がこれを行うために使用しているトリックをあなたと共有したいと思います。私のトリックの主なアイデアは、ほとんどのコンソールアプリとコマンドの終了コードを格納する特別な環境変数%errorlevel%の値に基づいています。これを実際に見てみましょう。
広告
一部のコンソールアプリがジョブを適切に終了すると、%errrorlevel%変数はその値として0を格納します。
新しいコマンドプロンプトインスタンスを開きます 'dir'コマンドを実行します。その後、「echo」コマンドを使用して%errorlevel%値を出力します。
dir echo%errorlevel%
出力として0を生成します。
それでは、通常の昇格されていないコマンドプロンプトウィンドウから、昇格が必要なコマンドを実行してみましょう。たとえば、試してみましょう openfiles 管理者権限を必要とするコマンド。
%errorlevel%値を出力する場合、openfilesコマンドは管理者権限なしで開いているファイルを表示できないため、0にはなりません。
ただし、管理者特権のコマンドプロンプトから実行した場合( 管理者コマンドプロンプトを開く方法は次のとおりです )、開いているファイルが表示され、期待どおりに0が返されます。
この機能を使用すると、バッチファイルに簡単なチェックを実装できます。
@echo off openfiles> NUL 2>&1 if NOT%ERRORLEVEL%EQU 0 goto NotAdminecho昇格したコマンドプロンプトからこんにちはgotoEnd:NotAdmin echoこのコマンドプロンプトはELEVATEDではありません:End
openfilesコマンドからの出力を抑制するために出力リダイレクトを使用することに注意してください。 '> NUL 2>&1部分'では、コマンドのデフォルト出力はnowhere(NUL)にリダイレクトされ、エラー出力は標準出力、つまりNULにもリダイレクトされます。
openfilesコマンドの代わりに、昇格を必要とする任意のコマンドを使用できます。たとえば、 ネットセッション コマンド。
それでおしまい。