- ベストアンサー
CreateFile が ERROR_PATH_NOT_FOUND のエラーになる
VC++を使っています。OSは Windows2000 です。 CreateFile で指定するファイル名をフルパスで指定し、EXEを同じ ディレクトリに置いて実行したところエラーとなり、詳細コードが ERROR_PATH_NOT_FOUND でした。 プログラムは以下のようになっています。 #define AAA "c:winnt\\system32\\AAA.log" hOpen = CreateFile( AAA, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 上記プログラムの AAA.exe を system32下に置いて実行すると、 パスが不正だと怒られてしまいます。。。 AAA.exe を別ディレクトリで実行すると、sysytem32下にちゃんと ファイルが作成されます。 AAA.exe を CreateProcess する BBB.exe を造って試しましたが、 やはり BBB.exe が system32下にあると駄目でした。 どうやらカレントディレクトリが同じだと駄目みたいです。 「"AAA.log"」とせずにフルパスとしているのは以下の理由のためです。 ・ファイルは必ず system32下に作成したい。 ・AAA.exe は必ず system32下にある。 しかし、BBB.exe が必ず system32下にあるとは限らないため、 「"AAA.log"」とした場合、BBB.exe を実行したディレクトリに 作成されてしまう。 CreateFile には今回のような制限があるのでしょうか??? #ヘルプを見る限り、書いてないです。。。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> #define AAA "c:winnt\\system32\\AAA.log の c:winnt が c:\\winnt じゃなくちゃいけない、ってんじゃないですか?
その他の回答 (1)
#define AAA "c:winnt\\system32\\AAA.log" ↓ #define AAA "c:\\winnt\\system32\\AAA.log" ではないですか?
お礼
早速の回答ありがとうございました。 ご指摘の通りです。 私のコーディングミスです。 #恥ずかしい。。。 別ディレクトリから実行した場合、正常に動作していたため、 define は問題ないと思い込んでいました。。。 #でも、何で正常なんだろう??? #ふしぎ、ふしぎ。。。
お礼
早速の回答ありがとうございました。 ご指摘の通りです。 私のコーディングミスです。 #恥ずかしい。。。 別ディレクトリから実行した場合、正常に動作していたため、 define は問題ないと思い込んでいました。。。 #でも、何で正常なんだろう??? #ふしぎ、ふしぎ。。。