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 には今回のような制限があるのでしょうか???
#ヘルプを見る限り、書いてないです。。。
お礼
回答ありがとうございます!ご指摘いただいた内容でロングファイル名を探してみましたが、変更可能な箇所でロングファイル名を使用しているところはありませんでした。よっていまだに現象は変わりません(涙)。内部的にどっかで持っているのでしょうか?せっかく回答いただいたのにすみません。