UACが有効になっているWindows Vistaを使用しています。アプリケーションをインストールしましたが、インストーラーには管理者権限が必要です。次に、インストーラーがアプリケーションを起動しました。アプリケーションが引き続き管理者権限で実行されているかどうかを知りたい。
Windowsタスクマネージャとプロセスエクスプローラを試しましたが、どちらもこの情報を表示していないようです。
Process Explorer で、プロセスをダブルクリックしてプロパティを開きます。 Securityタブに移動します。グループリストでBUILTIN\Administratorsを見つけて、Flags列。
拒否=昇格しない(管理者ではない)
所有者=昇格(管理者)
Process Explorerでは、表示される列を変更し、[Process Image]タブから[Integrity level]列を追加できます。
これは明らかに、管理者特権でプロセスを実行したときに変更されるものの専門用語です。管理者としてProcess Explorerを実行すると、通常のプロセスは「中」の整合性レベルとして表示され、上位のプロセスは「高」として表示されます。
通常のユーザーとしてプロセスエクスプローラーを実行すると、整合性レベルの列に空白のエントリがある管理者特権を持つプロセスが表示されます。
OSで更新:Windows 7およびWindows 10に含まれていると思われるリソースモニター(Vistaについては不明)は、CPUタブのプロセスセクションのリストにオプションの「昇格」列があり、かなり正確に見えます。
コマンドラインツールを使用する場合は、 MS Sysinternals Suite の Accesschk ユーティリティを使用して、プロセスが管理者権限で実行されているかどうかを確認できます。
次のフラグは、この目的に役立ちます。
-p
(プロセス)オプションは、実行中のプロセスの名前またはPIDを受け入れます。
-v
(冗長)オプションは Windows Integrity Level を出力します
-q
(クワイエット)オプションは、バージョン情報が印刷されないようにします。
-f
(フル)オプションを使用して、プロセスに関する詳細情報(ユーザー、グループ、特権のセキュリティトークンの詳細)を提供することもできますが、このレベルの追加の詳細は、昇格された特権を確認する必要はありません。
実行中のすべてのcmd
プロセスの特権を一覧表示します。
> accesschk.exe -vqp cmd
[5576] cmd.exe
Medium Mandatory Level [No-Write-Up, No-Read-Up]
RW ICS\Anthony
PROCESS_ALL_ACCESS
RW NT AUTHORITY\SYSTEM
PROCESS_ALL_ACCESS
[8224] cmd.exe
Medium Mandatory Level [No-Write-Up, No-Read-Up]
RW ICS\Anthony
PROCESS_ALL_ACCESS
RW NT AUTHORITY\SYSTEM
PROCESS_ALL_ACCESS
Error opening [6636] cmd.exe:
Access is denied.
ここでは、開始したcmd
プロセスが3つあることがわかります。最初の2つにはMedium必須(整合性)レベルがあり、私のドメインアカウントで実行されているように表示され、これらのプロセスが管理者権限なしで開始されたことを示します。
ただし、最後のプロセス(PID 6636)は昇格された権限で開始されたため、非特権コマンドはそのプロセスに関する情報を読み取ることができません。昇格されたアクセス許可accesschk
で実行し、そのPIDを明示的に指定すると、次の情報が出力されます。
> accesschk.exe -vqp 6636
[6636] cmd.exe
High Mandatory Level [No-Write-Up, No-Read-Up]
RW BUILTIN\Administrators
PROCESS_ALL_ACCESS
RW NT AUTHORITY\SYSTEM
PROCESS_ALL_ACCESS
これで、整合性レベルがHighであり、このプロセスがAdministrators
組み込みセキュリティグループの下で実行されていることがわかります。