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