Ilekroć próbuję utworzyć plik za pomocą fopen, fopen działa tak, jakby plik został poprawnie otwarty i ma pełny dostęp do niego, ale nie robi tego ". t faktycznie tworzy plik. Mój program nie ma uprawnień do zapisu w folderze głównym systemu, ponieważ potrzebuje uprawnień administratora, aby tam pisać, ale dlaczego fopen() nie daje żadnych błędów?fopen nie działa niewidocznie podczas tworzenia plików w napędzie systemowym (C: )
Każdy pomysł, jak stwierdzić, czy wystąpił błąd, czy nie? Uchwyt pliku, który zostanie zwrócony, gdy próbuję otworzyć plik w chronionym katalogu, jest dokładnie taki sam, jak po otwarciu pliku w katalogu, w którym mam dostęp do zapisu.
Próbowałem tego z różnymi wersjami fopen (fopen, _wfopen, _wfopen_s), ale wszystkie mają takie same wyniki.
Co ciekawe, GetLastError() zwraca ERROR_ALREADY_EXISTS.
Oto kod, który używam:
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: Jak rerun wskazał, plik jest uzyskiwanie wygenerowana w% appdata% z powodu virtualization. Czy ktoś wie, jak wyłączyć tę funkcję?
Z pewnością tak. –
Wow, tak, tam właśnie kończy się dziennik, dziękuję! Każdy pomysł, w jaki sposób można zrobić fopen zamiast tego podać błąd? –