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