Cada vez que intento crear un archivo usando fopen, fopen actúa como si el archivo se hubiera abierto correctamente y tuviera acceso completo a él, pero no funciona t en realidad crea el archivo. Mi programa no tiene acceso de escritura a la carpeta raíz del sistema porque necesita acceso de administrador para escribir allí, pero ¿por qué no fopen() da ningún error?fopen falla de forma invisible al crear archivos en la unidad del sistema (C: )
¿Alguna idea de cómo decir si hay un error o no? El identificador de archivo que se devuelve cuando intento abrir el archivo en un directorio protegido es exactamente el mismo que cuando abro un archivo en un directorio donde tengo acceso de escritura.
He intentado esto con las diferentes versiones de fopen (fopen, _wfopen, _wfopen_s) pero todas tienen el mismo resultado.
Curiosamente, GetLastError() devuelve ERROR_ALREADY_EXISTS.
Aquí está el código que estoy usando:
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: Como rerun señaló, el archivo está siendo creado en% APPDATA% debido virtualization. ¿Alguien sabe cómo desactivar esta característica?
Ciertamente sí. –
Guau, sí, ahí es donde terminaba el registro, ¡gracias! ¿Alguna idea de cómo hacer fopen arrojar un error en su lugar? –