「アプリケーション固有の設定は、All Users/Application Data に書きましょう」って、勉強会でも言ったし、ここに何度か書いてきたと思うけど。
ごめんなさい!!ダメです、ここ。。。
正確には、「ユーザが読み書きできるアプリケーションのデータをしまう為には使えない」です。あるユーザが設定したことが、すべてのユーザに適用されるような時は、使用できません。それから、ログを追記していくとかも。
ここの Users に対するアクセス権限が、「読み取り(フォルダとファイル)」+「書き込み(フォルダ)」になっています。このため、新しいファイルを作ることはできるけど、すでにあるファイルに書き込むことはできません。
もちろん、最初に Administrators が作って、アクセス権を変更するってんなら、話は別ですよ。
そして、なんか、XP と Vista で動作が違うような気がする。Vista では、CStdioFile でファイルを作ろうとしたときに、CFileException が送出されない。。。
サポート情報に「Visual C++ 2005 または Visual C++ .NET を使用して、ユーザーとアプリケーションのデータを適切な場所に格納する Windows XP アプリケーションを記述する方法」というのがあって、ここに、コンピュータごとのデータ (ユーザー固有ではなく、移動しない)」のデータは、CSIDL_COMMON_APPDATA 値を使用します。これは、デフォルトでは次のパスになります。
とか書いてあって、さらに次のコードは、CSIDL_COMMON_APPDATA にある一時ログ ファイルを開く方法を示しています。
と、ログを書き込む処理例が載っているのですが。
おお!!GetTempFileName でテンポラリなファイル名を作っている!!参りました。
投稿日時 : 2007年6月28日 22:30