よく忘れるので備忘録。
Windows Vista以降ではセキュリティ強化の機能としてユーザーアカウント制御(以下UAC)が備わってます。
システムが管理する場所に怪しいソフトが介入しないようにする強力な機能なわけですが、これに対応してないソフト(というか管理者権限がないソフト?)がProgram FilesやWindowsフォルダ配下にファイルを出力しようとすると、OSが別の場所にファイルを保存して、仮想的にそちらを参照するようにさせます。
私の場合TVTestをProgram Files内に置いているんですが、TVTestの設定ファイルであるTVTest.iniをエディタでいじったのにもかかわらずTVTestが認識してくれず、首を傾げた結果がUACによるファイルの仮想化でした。
C:\Program Files\プログラムのフォルダ名 C:\Users(ユーザー名)\AppData\Local\VirtualStore\Program Files\プログラムのフォルダ名 (64bit環境の場合はProgram FilesではなくてProgram Files(x86)
上のフォルダにファイルが出力されてます。これをいじらないといけなかったようで。
どうしてもProgramFiles内にファイルを置きたいのであればそのフォルダにフルコントロールの権限を与えておけばよいようです。
UACの意味がなくなるような気もしますが(
参考