VirtualStore
Windows Vista/7から、管理者権限を持ったユーザーが管理者権限を持たせて起動したアプリ以外は
セキュリティの観点から c:\Program Files や c:\Program Files(x86)などには書き込みできないようになっている
まぁ、詳しい説明は以下参照
-> Windows Vista/7 のファイルの仮想化(Virtualization)について
Windows Vista からは、ファイルとレジストリの仮想化という機能が実装されています。 この機能は、具体的にはユーザーの操作によって特定のファイルやレジストリエントリに書き込みが発生した場合に、自動的に別の場所に書き込む機能です。 ユーザーアカウント制御(UAC) が有効になっていて、プログラムを管理者として実行していない場合にこの機能が働きます。 (アプリケーションのマニフェストで実行権限を指定している場合を除く)
この機能によってどのようなことが起こるかというと、 たとえば設定ファイル(iniファイル)を実行ファイル(exeファイル)と同じフォルダや Windows フォルダに保存しているプログラムや、 データを実行ファイルと同じフォルダに保存しているプログラムで、ユーザーが意識しているフォルダと実際に保存されるフォルダが違うことになります。 ただし、API の WritePrivateProfileString を使った場合などに、仮想化されないこともあります。
さっきふと c:\Program Files(x86)\TVTEST 直下を見たら、各種iniファイルがないのになぜか設定保存してたんで、なんでだろ??と思って色々調べた結果
上記にあるように VitrualStore ディレクトリに設定が保存されていた
んで、もちろんそんな所バックアップとってるわけもなく(苦笑
Beckyの設定ファイルとかも Program Files(x86)以下のは更新されておらず、VirtualStoreに作成された設定ファイルが更新されていたりして
色々不便だったので、上記サイトにあるようにProgram Files以下の必要なフォルダだけ権限付与してみた
これ位ならセキュリティ的には問題なかろう