読み取り専用ファイルに書き込むためには


ヨロシコ  2006-12-21 09:54:17  No: 64034  IP: 192.*.*.*

環境 XPpro .NET2003 MFC

基本的なことなのかもしれませんが...。

CFile fp( csFilePath, CFile::modeWrite | modeCreate );
これでは、ファイルが読み取り専用の場合アボートするようです。

何かの拍子にファイルに読み取り専用フラグがたつ場合があり、
これを無視して書込みたいのですが、何か対処方法ありますでしょうか?

よろしくお願いします。

編集 削除
Blue  2006-12-21 10:00:37  No: 64035  IP: 192.*.*.*

>何かの拍子にファイルに読み取り専用フラグがたつ場合があり
よくわからないけど、フラグにShareDenyNoneを指定してみるとか?

>アボートするようです。
というか、CFileExceptionが発生しているのでは?

編集 削除
dairygoods  2006-12-21 11:18:24  No: 64036  IP: 192.*.*.*

SetFileAttributes でフラグを外してからファイルを開くとか。

編集 削除
シャノン  2006-12-21 11:21:37  No: 64037  IP: 192.*.*.*

そもそも、その「何かの拍子に読み取り専用フラグが立つ」原因を特定するのが先じゃないか。
CDに焼いてからHDDにコピーしたとか考えられるけど、本当に書き込んでほしくなくて読み取り専用になっているという可能性はあり得ないの?

編集 削除
ヨロシコ  2006-12-21 13:49:13  No: 64038  IP: 192.*.*.*

>よくわからないけど、フラグにShareDenyNoneを指定してみるとか?
すでに試してみましたが、ダメでした...。

>というか、CFileExceptionが発生しているのでは?
たしかにCFileExceptionが発生していました。MSDNで調べてみましたが
対処法がよくわかりませんでした...。

>SetFileAttributesでフラグを外してからファイルを開くとか。
SetFileAttributesでOKでした。

読み取り専用フラグがたつというのは、自分はSourceSafeでプロジェクトを管理しているのですが、そこから取得するとこのフラグが必ずたち、アボートするので原因を調べていた感じです。使うファイルはこちらが提供するファイルで、このフラグがたっているとも限らないのですが、もしものことを考えて対処法を考えていました。

プログラム上でフラグを勝手にとるのもまずいかとも言えますが、アボートするのもと考えて...。

編集 削除