UACで,操作が拒否される場合に必ず管理者承認モードになるわけではない。Vistaでは,昇格が必要なアプリケーションとそうでないものを区別して昇格のダイアログを表示している。ではVistaは,どのような基準で昇格が必要かどうかを判断しているのだろうか。

UACの対象を判別する方法は3種類

 もっとも重要なのが,アプリケーションの「マニフェスト」である。マニフェストとは,アプリケーションを起動する際に必要なファイルや環境を記述したXMLデータのこと。アプリケーション内にリソースとして埋め込まれたり,別ファイルとして保存されていたりする。アプリケーションを開発したプログラマが,マニフェストに「管理者権限で実行してほしい」と書いておくと,Vistaは「実行のために昇格が必要」と判断するのである。

 Vistaのシステム・プログラムには基本的に,このマニフェストが付いている。このため,管理者権限な操作をするためにシステム・プログラムを呼び出そうとすると,その時点で管理者承認モードに切り替わるわけだ。

 マニフェストが見つからないアプリケーションを実行する場合は「互換性データベース」を調べる。これは,古いソフトに関する情報を登録したデータベースで,この中に管理者権限が必要かどうかの情報も入っている。

 それ以外に,実行するファイル名で判断する場合もある。例えば,レジストリにデータを書き込むなど,システムに影響を与えるインストーラは,「install」,「setup」,「update」といった単語を含む実行ファイルのことが多い。そのため,これらのファイルについては自動的に判別し,実行しようとすると管理者承認モードとなる。

 これは,適当なテキスト・ファイルの名前を「setup.exe」に書き換えてみると簡単に確認できる。中身はシステムに影響を与えない単なるテキスト・ファイルのままなのに,ファイル名を変えただけでUACの対象を表す「盾」マークがアイコンに付加されることがわかる(図3)。

図3●管理者権限が必要なプログラムの判断にはファイル名も使う<br>テキスト・ファイルの名前を「SetUp.exe」に変えるだけでインストーラと認識されてしまう。
図3●管理者権限が必要なプログラムの判断にはファイル名も使う
テキスト・ファイルの名前を「SetUp.exe」に変えるだけでインストーラと認識されてしまう。
[画像のクリックで拡大表示]