Windows Vista でどのように設定ファイルを格納していたのかおさらいをします。なお、下で使われる幾つかの記号について以下のように定義します。
myapp | アプリケーションの名前 |
maker | 製造元または作者名 |
%USER% | ユーザ名 |
%APPDIR% | アプリケーションの格納ディレクトリ |
%APPDATA% | マイクロソフト推奨のユーザデータ格納基準ディレクトリ |
Windows では、アプリケーションは「c:\Program Files\」というディレクトリの下にそれぞれのディレクトリを作って、その中にアプリケーションを格納することが推奨されてきました。したがって、%APPDIR% に ini 形式のファイルで保存する場合、たいてい Program Files ディレクトリの下に格納されることになります。
ところで Windows Vista から UAC (User Account Control) という機能が有効になりました。この機能は、管理ユーザとしてログインしていても、その権限を通常ユーザと同等に制限するというものです。管理者権限で動作させたい機能がある場合には、明示的に権限を昇格させる必要があります。
これが問題を発生させる可能性があります。UAC が有効になっておりかつ権限が昇格されていない状態の Vista では、「c:\Program Files\」以下への書き込みは、「c:\Users\%USER%\AppData\Local\VirtualStore\」という場所に自動的に変換されて書きこまれるようになりました。つまり、設定ファイルを書き込もうとすると自動的に違う場所に書き込まれることになります。また UAC が無効か権限が昇格されている場合には、そのまま Program Files のところに書き込まれます。これは混乱を引き起こしかねません。
また Vista での標準の %APPDATA% は 「c:\Users\%USER%\AppData\Roaming\」となりました。
関連
- Windows アプリケーションの設定ファイル (ini ファイルや config ファイル) 格納場所についての検討 〜 格納すべき基準ディレクトリ2
- Windows アプリケーションの設定ファイル (ini ファイルや config ファイル) 格納場所についての検討 〜 格納すべき基準ディレクトリ
- Windows アプリケーションの設定ファイル (ini ファイルや config ファイル) 格納場所についての検討 〜 レジストリへの格納
- Windows アプリケーションの設定ファイル (ini ファイルや config ファイル) 格納場所について 〜 まとめ
- Windows アプリケーションの設定ファイル (ini ファイルや config ファイル) 格納場所について 〜 Windows NT4、Windows 2000、Windows XP の場合
- Windows アプリケーションの設定ファイル (ini ファイルや config ファイル) 格納場所について 〜 Windows 95 の場合
- Windows アプリケーションの設定ファイル (ini ファイルや config ファイル) 格納場所について 〜 Windows 3.1 の場合