fopenを使用してファイルを作成しようとするたびに、fopenはファイルが正しく開かれているかのように動作し、実際にはファイルを作成しません。私のプログラムは、そこに書き込むための管理者アクセスが必要なのでシステムルートフォルダへの書き込みアクセス権を持っていませんが、なぜfopen()はエラーを出さないのですか?システムドライブ(C:)にファイルを作成するときにfopenが表示されない
エラーがあるかどうかを確認するにはどのようなアイデアですか?保護されたディレクトリでファイルを開くときに返されるファイルハンドルは、書き込みアクセス権を持つディレクトリでファイルを開いたときとまったく同じです。
私はfopen(fopen、_wfopen、_wfopen_s)のさまざまなバージョンでこれを試しましたが、それらはすべて同じ出力を持っています。
興味深いことに、GetLastError()はERROR_ALREADY_EXISTSを返します。
ここで私が使用しているコードです:
FILE *FileHandle;
DWORD error = _wfopen_s(&FileHandle, L"\\filename.txt", L"a");
Win32Error = GetLastError();
if (error != 0 || FileHandle == NULL)
{
//Throw error
}
else
{
//write to file
//close file
}
EDIT:rerunが指摘したように、ファイルが原因virtualizationの%のAPPDATA%の中に作成されたばかりされては。誰もこの機能を無効にする方法を知っていますか?
もちろんあります。 –
うわー、ええ、それはログが終了したところです、ありがとう!任意のアイデアはどのようにfopenを代わりにエラーをスローすることができますか? –