laugh out loudly

ばくは しましょう!

プロフィール

Enrike

最近の記事

最近のコメント

最近のトラックバック

月別アーカイブ

カテゴリー

ブログ内検索

RSSフィード

リンク

このブログをリンクに追加する

Windows Vistaのプログラムの互換性

Windows Vistaの権限モデルと互換性について、PC中級者程度の人なら知っておいた方が良い知識をまとめておきます。

アプリケーション整合性レベル

アプリケーションのもつ権限は三段階に分けられます。

整合性レベル ユーザー権限 説明
管理者 C:\Windows, C:\Program Files, レジストリHKEY_LOCAL_MACHINEへの書き込み
標準ユーザ %USERPROFILE%, レジストリHKEY_CURRENT_USERへの書き込み
%USERPROFILE%\AppData\LocalLowへの書き込み。IEなど

UAC(ユーザーアカウント制御)

Windows Vistaではデフォルトでは、管理者ユーザでも標準ユーザと同じ権限を強制されます。この機能は「ユーザーアカウント制御(以下UAC)」と呼ばれます。

アプリケーションを本当に管理者権限で動かしたいときは、右クリックして「管理者権限で実行」を選びます。

管理者権限で実行

デフォルトで管理者権限を要するアプリでは、プロパティ-互換性から「管理者としてこのプログラムを実行する」をONにしておくと楽です。

Windowsアプリケーションの正しい作法

アプリケーションはどうしても必要なときのみ管理者権限を要求するべきなので、Program FilesにインストールされたアプリケーションでもProgram Filesに設定を保存するべきではありません。設定を書き換える度に管理者権限が必要になり、またマルチユーザー環境でもシステム全体で一つの設定しか使えません。アプリケーションの設定ファイルの正しい置き場所は環境変数%AppData%で取得されるフォルダ以下です。

Vistaでは%USERPROFILE%\AppDataが隠しフォルダになっています。見に行くときは検索バーから飛ぶのが便利です。

Virtual Store

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 - ジャンル:コンピュータ

  1. 2007/03/11(日) 00:50:15|
  2. Windows
  3. | トラックバック:0
  4. | コメント:0
<<壁紙、壁紙 | ホーム | Vista switch>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://lol.blog12.fc2.com/tb.php/218-51fcc08e
この記事にトラックバックする(FC2ブログユーザー)