Vistaや7では当たり前のことで、ちょっと古いネタなのですが、XPから移行した際にはまりかねない点なので書いてみます。
Windows Vistaから一部ディレクトリの権限が変更された
Vista以降では、C:\Program Files
や C:\Windows
以下などへ通常権限では書き込めません。
UAC(ユーザーアカウント制御)が有効になっている限り、管理ユーザも普段は通常権限になるので、これらのフォルダに変更を加えようとするとUACが発動するはずです。
この制限はプログラムから書き込む場合も同じで、管理者権限で起動(起動時に右クリック「管理者として実行」)した場合は良いのですが、そうでない場合は書き込めません。
プログラムは通常 C:\Program Files
にインストールするので、プログラムディレクトリにデータを保存できない、ということになります(UAC対応していない場合)。
そのため、行儀正しいプログラムは、Application Data
などに設定を書き込みます。
ソフトウェアのインストール先も変更されることがある
一部のフリーソフトなどは、プログラムファイルと同じ場所にファイルを書き込もうとします。
このようなソフトから書き込みを試みた場合、単に失敗するのではなく、別のフォルダにリダイレクトされて書き込まれます。
具体的には、C:\Users\ユーザ名\AppData\Local\VirtualStore 以下に書き込まれます。
たとえば、babaがC:\Program Files\HogeApp\HogeApp.exe
をログインして起動した場合、HogeApp.exeから同じフォルダに書き込むと、
C:\Users\baba\AppData\Local\VirtualStore\Program Files\HogeApp
にファイルが生成されます。
設定ファイルが無い!とか、管理者権限で起動したら設定が変わってる!という場合、これを調べてみると良いと思います。
追伸
ちなみに、AppData
フォルダは隠しフォルダなので、フォルダオプションで表示設定しないと出てきません。