Estoy tratando de crear una función robusta de eliminación de carpetas recursivas.FindFirstFile devuelve acceso denegado
Con los directorios normales funciona bastante bien.
El problema aparece cuando creo un direcory "Hardcore", como:
C: \ test \ x \ x \ x \ x \ x \ x \ x \ x \ x \ x \ x \ x \ x \ x \ x \ x \ x \ x \ x \ x \ ... \ x \ x \ x
La longitud de esto es alrededor de 25000 (menos que el límite de MSDN: 32,767). Básicamente creé este directorio recursivamente hasta que falló la función CreatDirectory.
Ahora, lo más extraño es, que mi función es capaz de eliminar 2 directorios entonces el FindFirstFile falla con 0x5:
\\?\C:\test\x\ ... \x\x\x\*.* < no error
\\?\C:\test\x\ ... \x\x\*.* < no error
\\?\C:\test\x\ ... \x\*.* < access denied
(puedo volver a ejecutar el que, la aplicación es lenta mastica la carpeta, 2 por 2, probablemente hasta que la longitud del camino sea bastante pequeña)
Estoy ejecutando FindFirstFile para verificar si la carpeta está vacía.
- ¿Hay algún tipo de limitación que esté menos documentada?
- ¿El FindFirstFile simplemente no funciona? (¿con errores?)
- ¿Me falta algún tipo de autorización de NTFS?
- otra cosa ...
EDIT: NOTA IMPORTANTE: si corro el programa paso a paso lentamente ... entonces nada va a fallar.
por favor muéstranos tu código eliminado –
El código es enorme, y no me parece útil publicarlo. – lerosQ
He hecho esto exactamente varias veces y nunca tuve un problema; el problema es más probable en tu código. Al menos intente reducirlo a un ejemplo mínimo para ver si es algo obvio. – Luke