[ホーム] - [バッチファイル サンプル一覧] - [コマンドプロンプトが管理者権限で実行されているか確認するコマンド]

コマンドプロンプトが管理者権限で実行されているか確認するコマンド | Windows バッチファイル






Windows 環境において開かれたコマンドプロンプトが管理者権限で開かれているか確認したい場合があると思います。
例えば管理者権限で開くことが必須のアプリケーションを起動する場合などです。
そんな場合にバッチファイルが管理者権限で開かれているか確認するコマンドを紹介します。

コマンドプロンプトが管理者で実行されているか確認




基本的な考え方


コマンドプロンプトが管理者権限で実行されているかを確認するコマンドそのものはありません。
よって「管理者権限で実行することが必須」なコマンドを実行し、結果としてエラーが戻らないか確認します。(管理者権限必須なコマンドを非管理者権限コマンドプロンプトで実行するとエラーになる点に着目しています。)

管理者権限必須で影響ないコマンド("net session" や "openfiles")を使用します。

成功した場合は %ERRORLEVEL% に0がセットされます。
一方で失敗した場合は %ERRORLEVEL% に0以外がセットされます。(1 あるいは 2)


コマンドプロンプトを管理者権限で開いていない場合

C:\>openfiles
エラー: ログオンしているユーザーは管理者特権を持っていません。

C:\>echo %ERRORLEVEL%
1




コマンドプロンプトを管理者権限で開いている場合

C:\>openfiles

情報: ローカルで開いたファイルを参照するには、システム グローバル フラグ
'maintain objects list' を有効にする必要があります。
詳細情報は、Openfiles /? を参照してください。


ローカルの共有ポイントをとおしてリモートで開いているファイル:
---------------------------------------------

情報: 開いている共有ファイルが見つかりませんでした。

C:\>echo %ERRORLEVEL%
0




コマンドプロンプトを管理者権限で開いていない場合

C:\>net session
システム エラー 5 が発生しました。

アクセスが拒否されました。


C:\>echo %ERRORLEVEL%
2




コマンドプロンプトを管理者権限で開いている場合

C:\>net session
一覧にエントリが存在しません。


C:\>echo %ERRORLEVEL%
0




サンプルプログラム


実際のサンプルプログラムを紹介します。"openfiles" というコマンドを使用しています。これは管理者権限必須のコマンドです。結果は関係ないので、>nul 2>&1 で結果を破棄しています。


@echo off
openfiles >nul 2>&1

if %ERRORLEVEL% equ 0 (
echo コマンドプロンプトは管理者権限で実行
) else (
echo コマンドプロンプトは管理者権限で実行されていない
)






参考:
管理者権限とadministrator権限の違い


・先頭に@を付けることでコマンドそのものは画面に出力しません。




本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。)

[ホーム] - [バッチファイル サンプル一覧]