fopen невидимо выходит из строя при создании файлов на системном диске (C: \)

Каждый раз, когда я пытаюсь создать файл с помощью fopen, fopen действует так, как если бы файл был открыт правильно и у него есть полный доступ к нему, но на самом деле он не создает файл. Моя программа не имеет доступа на запись в системную корневую папку, потому что ей нужен доступ администратора для записи в нее, но почему 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
}

РЕДАКТИРОВАТЬ: Как указано в rerun , файл создается в% APPDATA% из-за виртуализации . Кто-нибудь знает, как отключить эту функцию?

5
задан Community 23 May 2017 в 11:44
поделиться