この内容は、ベータ版を元にしています。製品版では変更になっている可能性があります。
アプリケーションのインストールと検出
Windows には、たくさんのソフトウェアがあります。そして、そのほとんどのソフトウェアが、インストールするために Administrator としてログインしなければなりません。アプリケーションはシステム ディレクトリにロードされ、システム リソース(レジストリなど)を書き換えるからです。
Windows Vista では、管理者承認モードでの管理者(Administrator in Admin Approval Mode)がソフトウェアをインストールためには、セットアップ プログラムが実行される前に、承認しなければなりません。インストーラ検出機能は、"setup", "install" などのファイル名を「アプリケーションのインストール プログラムである」と自動的に識別して、ユーザの承認を求めるダイアログを表示します。ユーザの承認が得られれば、プログラムは管理権限へ昇格して実行されます。
UAC 環境でアプリケーションにパッチを当てる
アプリケーションにパッチを当てることを考慮すると、Microsoft Windows Installer (MSI) 3.1 および 4.0 を使うことが推奨されます。MSI 3.1 を導入すると、アプリケーションのもっとも新しいバージョンを再インストールすることなく、パッチを適用することが出来ます。アプリケーションが個々のマシンにインストールされており、管理特権を必要としないユーザによってパッチが適用される必要があるなら、この方法が理想的です。
UIPI 概要
ユーザ インターフェイス特権の分離は、同じ対話型デスクトップ上で実行中の、より低い特権しかないプロセスから、上位の特権を持つ管理アプリケーションを遠ざける機構のひとつです。UIPI は、ウインドウと UI コントロールをサポートする、USER として知られるウインドウ作成とグラフィクス サブシステムに対して働きます。UIPI は、低い特権で動作するプロセスが、メッセージを使って、より高い特権で動作するプロセスに対して入力を送るのを阻止します。これは、キーボードやマウスを使わずに、プロセスからプロセスに入力を送ることを阻止するということです。
UIPI の背景は単純です。Windows Vista は、UI 特権レベルを階層として定義します。レベルの性質はそういうことです。すなわち、高い特権レベルから低い特権レベルのアプリケーションにメッセージを送ることは出来ます。しかし、低い特権レベルのアプリケーションが、高い特権レベルにメッセージを送ることは出来ません。
UI 特権レベルは、プロセスレベルで存在します。プロセスが初期化されるとき、ユーザ サブシステムは、セキュリティ サブシステムに対して、プロセス セキュリティ トークンに割り当てられたデスクトップ一貫性レベルを要求します。プロセスが作成されると、デスクトップ一貫性レベルは、セキュリティ サブシステムによって設定されます。その為、プロセスが作成されてから変化しないなら、UI 特権レベルはユーザ サブシステムによって設定されます。
制限されたユーザによって実行されたすべてのアプリケーションは、同じ UI 特権レベルを持っています。UIPI は、同じ特権レベルにおけるアプリケーション間で、ウインドウ メッセージが交換されることに、干渉したり、変更したりしません。UIPI は、管理特権で実行しているプロセスと同じデスクトップにて、最少特権でアプリケーションを実行している、Administrators グループに属しているユーザのために効力を発揮します。UIPI は、より低い特権プロセスが、より高い特権プロセスに、次のようなアクセスをすることを阻止します。
-
より高いプロセス特権の、ウインドウ ハンドルを確認する。
-
より高い特権アプリケーション ウインドウに、SendMessage あるいは PostMessage を行う。これらの API は「成功」を返しますが、ウインドウ メッセージはドロップされます。
-
より高い特権プロセスに対して、スレッド フックを行う。
-
より高い特権プロセスをモニタするために、ジャーナル フックを使う。
-
より高い特権プロセスに対して、DLL インジェクションを行う。
UIPI が有効であっても、次の共有ユーザ リソースは、異なった特権レベルのプロセス間で共有されます。
Windows Vista Beta 1 の UIPI
Windows Vista Beta 1 では、UIPI は無効にされています。レジストリに DWORD 値 1 を書き込むことで、有効に出来ます(HKLM > SOFTWARE > Microsoft > Windows > CurrentVersion > Policies > System > enablemic)。UAC が無効なら、UIPI を有効にしても、ウインドウ メッセージの挙動は変わりません。
投稿日時 : 2006年6月8日 6:26