こんにちは。阿久津です。前号で説明し忘れましたが、本連載で紹介するチューニングテクニックは、UAC(ユーザーアカウント制御)を無効にした、Windows Vista Ultimate SP1で検証しています。そのため、UACの確認ダイアログや、バーチャルストアに関連する手順が異なる可能性がありますので、ご了承ください。

メモ: コントロールパネルからUACを無効にする方法
1.<スタート>メニューなどからコントロールパネルを開く。
2.「ユーザーアカウント」をダブルクリック。
3.「ユーザーアカウント制御の有効化または無効化」をクリック。
4.<ユーザーアカウント制御を使ってコンピュータの保護に役立たせる>をチェックオフ。
5.<OK>ボタンをクリック。
6.コンピュータを再起動する。

さて、前述のバーチャルストアですが、Windows Vistaから導入された新機能ながらも、あまり意識していない方が多いのではないでしょうか。同機能はユーザーレベルで、Program FilesフォルダやHKEY_LOCAL_MACHINE \ SOFTWAREキーへの書き込みが発生すると、前者は「%LOCALAPPDATA% \ VirtualStore」フォルダへ、後者は「HKEY_CURRENT_USER \ Software \ Classes \ VirtualStore」キーへ、書き込みをリダイレクトするものです。これはWindows XP時代にシステムが管理するフォルダへの書き込みが、OSの不具合を引き起こす要因として、新たに導入されました。

同ロジックに関しては、MSKB927387で解説されているので、ご興味のある方はご一読ください。このバーチャルストアに関して混合しやすいのが、UAC有効時はバーチャルストアにより書き込みがリダイレクトされるものの、UAC無効時は従来どおり、アプリケーションなどが指定したフォルダもしくはキーへのファイルおよびレジストリ値の書き込みが行なわれる点。そのため、設定ファイルやレジストリエントリを直接書き換えることが多い場合、UAC有効時のデメリットが多数発生するのです。

また、Windows Vista導入直後からUACを無効にしている場合、バーチャルストアのリダイレクト処理は、さほど問題にはなりませんが、途中から設定を変更すると混乱の原因となります。たとえば、アプリケーションの設定情報が「%ProgramFiles% \ foo \ bar.ini」となっている場合、UAC有効時は「%LOCALAPPDATA% \ VirtualStore \ foo \ bar.ini」が参照されるものの、UACを無効にすると「%ProgramFiles% \ foo \ bar.ini」が参照されるようになり、アプリケーションが正常動作しなくなります。もしくは設定情報がクリアされ、再設定を強いられるかもしれません(図1、2)。

図1: アプリケーション(ここでは曽田純氏の「FFFTP」)を起動し、設定情報を拡張子「.ini」ファイルに保存するよう設定を変更。すると、VirtualStoreフォルダ下にiniファイルが生成される

図2: ちなみにFFFTPの導入フォルダである「%ProgramFiles% \ ffftp」は、ご覧のとおり設定ファイルは生成されていない

また、UAC有効/無効を切り替えると、設定情報が両フォルダに生成されることになるものの、UAC有効時はバーチャルストアが優先的に参照さることがあり、その場合は、同じくアプリケーションの設定情報にタイムラグが発生することになり、同じくアプリケーションの動作に支障を来たすことでしょう。

このように、従来の使用スタイルでは支障を招くWindows Vistaのバーチャルストア機能ですが、セキュリティ的な問題でUACを無効にしたくない方は、バーチャルストアのみ無効にするチューニングテクニックをお試しください。

  1. <スタート>メニュー→クイック検索に「regedit」と入力して[Enter]キーを押す。
  2. レジストリエディタが起動したら、HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ Systemまでキーをたどって開く。
  3. DWORD値「EnableVirtualization」をダブルクリックし、値のデータを「0」に書き換えてから<OK>ボタンをクリック。
  4. レジストリエディタを終了し、Windows Vistaを再起動する。
※直接入力の際は、バックスラッシュ(\)前後のスペースを取り除いてください。

ステップ2で該当キー、ステップ3でDWORD値がない場合は、それぞれ作成してください。ただし、UAC有効時に作成された「%ProgramFiles% \ {アプリケーション}」フォルダはアクセス制限がかかっているため、同フォルダにファイルを生成できない場合があります(図3)。

図3: DWORD値「EnableVirtualization」のデータ値を変更してもファイルを書き込めない場合は、セキュリティ設定の変更が必要です

これは、同フォルダのアクセス許可設定に起因し、Administratorsグループはフルコントロールながらも、Usersグループは「フルコントロール」「変更」が許可されていません。その際は、対象となるフォルダのプロパティダイアログにある<セキュリティ>タブで設定を変更してください(図4、5)。

図4: 変更するフォルダのプロパティダイアログにある<セキュリティ>タブを開き、<編集>ボタンをクリックします。次に新たに開いたダイアログで、Usersグループを選択。この状態で「フルコントロール」「変更」にチェックを入れ、<OK>→<OK>とボタンをクリックしてください

図5: これでFFFTPの導入フォルダである「%ProgramFiles% \ ffftp」内に設定ファイルである「ffftp.ini」が生成された

それでは、また次号でお会いしましょう。

阿久津良和(Cactus)