Windows Vistaの権限モデルと互換性について、PC中級者程度の人なら知っておいた方が良い知識をまとめておきます。
アプリケーションのもつ権限は三段階に分けられます。
| 整合性レベル | ユーザー権限 | 説明 |
| 高 | 管理者 | C:\Windows, C:\Program Files, レジストリHKEY_LOCAL_MACHINEへの書き込み |
| 中 | 標準ユーザ | %USERPROFILE%, レジストリHKEY_CURRENT_USERへの書き込み |
| 低 | %USERPROFILE%\AppData\LocalLowへの書き込み。IEなど |
Windows Vistaではデフォルトでは、管理者ユーザでも標準ユーザと同じ権限を強制されます。この機能は「ユーザーアカウント制御(以下UAC)」と呼ばれます。
アプリケーションを本当に管理者権限で動かしたいときは、右クリックして「管理者権限で実行」を選びます。
デフォルトで管理者権限を要するアプリでは、プロパティ-互換性から「管理者としてこのプログラムを実行する」をONにしておくと楽です。
アプリケーションはどうしても必要なときのみ管理者権限を要求するべきなので、Program FilesにインストールされたアプリケーションでもProgram Filesに設定を保存するべきではありません。設定を書き換える度に管理者権限が必要になり、またマルチユーザー環境でもシステム全体で一つの設定しか使えません。アプリケーションの設定ファイルの正しい置き場所は環境変数%AppData%で取得されるフォルダ以下です。
Vistaでは%USERPROFILE%\AppDataが隠しフォルダになっています。見に行くときは検索バーから飛ぶのが便利です。
Windows XPまでほとんど全てのユーザがWindowsを管理者権限で使用していたため、Program Filesに設定を保存するマナーのなっていないアプリが数多あります。UAC制御下においてアプリケーション整合性レベル-中で動作するためProgram Files以下に設定を書き込むことができません。
互換性への配慮から、マナーの悪いアプリでもなんとか動作させねばいけません。しかしながら毎回管理者権限を付与するようではセキュリティに不安があります。
VistaではVirtual Storeと呼ばれる仕組みでこの問題を解決します。 これはC:\WINDOWSやProgram Files以下へのファイルの読み書きを%USERPROFILE%\AppData\Local\VirtualStoreへリダイレクトする機能です。例えばアプリケーションがC:\Program Files\Hoge\hoge.iniへ書き込みを試みると、<VirtualStore>\Program Files\Hoge\hoge.iniへ書き込まれます。読み取りも同様です。
リダイレクトが行われるフォルダでは、Explorerのツールバーに「互換性ファイル」が現れます。
「互換性ファイル」をクリックするとリダイレクト先に飛ぶことができます。
ややトリッキーではありますが、リダイレクトによりアプリはユーザ権限で動作し、UACのダイアログに悩まされることもありません。互換性への配慮でもありとても良い機能です。
Virtual Storeへのリダイレクトを「気持ち悪い」と思う人はいるでしょうし、「つまんでポイ」するだけで綺麗さっぱりアンインストールしたい(リダイレクト先にゴミを残したくない)人もいるでしょう。そういう人は%USERPROFILE%以下に適当なフォルダ(binとか)を作ってそこにインストールするといいでしょう。
テーマ:Windows Vista - ジャンル:コンピュータ