No se puede eliminar un archivo o una carpeta en un NTFS volumen del sistema de archivos


Para seguir recibiendo actualizaciones de seguridad para Windows, asegúrese de ejecutar Windows XP con Service Pack 3 (SP3). Para más información, consulte esta página web de Microsoft: Finaliza el soporte técnico para algunas versiones de Windows

INTRODUCCIÓN


Este artículo describe por qué no podrá eliminar un archivo o una carpeta en un volumen de sistema de archivos NTFS y cómo tratar las causas diferentes para resolver este problema.

Más información


Nota Internamente, NTFS trata las carpetas como un tipo especial de archivo. Por lo tanto, la palabra "archivo" de este artículo indica un archivo o una carpeta.

Causa 1: El archivo utiliza una ACL

Es podrán que no pueda eliminar un archivo si el archivo utiliza una lista de Control de acceso (ACL). Para resolver este problema, cambie los permisos en el archivo. Tendrá que tomar posesión de los archivos para poder cambiar los permisos.Los administradores tienen implícitamente la capacidad de tomar posesión de cualquier archivo, incluso si ellos no cuentan los permisos para el archivo. Propietarios del archivo tienen implícitamente la capacidad de modificar los permisos de archivo incluso si explícitamente no se conceden los permisos para el archivo. Por lo tanto, tendrá que tomar posesión de un archivo, Concédase permisos para eliminar el archivo y, a continuación, elimine el archivo.

No puede utilizar ciertas herramientas de seguridad para mostrar o modificar los permisos porque el archivo tiene una ACL no canónica

Para evitar este problema, utilice otra herramienta (por ejemplo, una compilación posterior de Cacls.exe).Las entradas de Control de acceso (ACE) de una ACL tienen una determinada secuencia preferida que depende de su tipo. Por ejemplo, las ACE que deniegan el acceso suelen ven antes de las ACE que conceden acceso. Sin embargo, nada impide que un programa escriba una ACL que tiene las ACE en cualquier secuencia arbitraria. En algunas versiones anteriores de Windows, problemas se produjeron cuando Microsoft Windows intentó leer estas ACL "no canónicas". A veces, no puede modificar correctamente estas ACL mediante el editor de seguridad gráfico del explorador de Microsoft Windows. Este problema se ha corregido en versiones posteriores de Windows. Si experimenta este problema, utilice la versión más reciente de Cacls.exe. Incluso si no se puede mostrar o modificar una ACL, puede escribir una nueva ACL que le permita el acceso al archivo.

Causa 2: El archivo está siendo utilizado

Es podrán que no pueda eliminar un archivo si el archivo está siendo utilizado. Para resolver este problema, determine qué proceso tiene el identificador abierto y ciérrelo.Dependiendo de cómo se abre el archivo (por ejemplo, está abierto para acceso exclusivo en lugar de acceso compartido), no podrá eliminar un archivo que está en uso. Puede utilizar una variedad de herramientas para ayudarle a determinar los procesos que tienen identificadores abiertos a archivos siempre que lo desee.Para obtener más información acerca de las herramientas para ayudar a los procesos que tienen identificadores abiertos a archivos, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base: 
242131 Cómo mostrar una lista de procesos que tienen archivos abiertos 
Los síntomas de este problema pueden variar. Puede utilizar el comando Eliminar para eliminar un archivo, pero el archivo no se elimina realmente hasta que el proceso que tiene las versiones de archivo abierto el archivo. Además, es podrán que no pueda acceder al cuadro de diálogo de seguridad de un archivo que está pendiente de eliminación. Para resolver este problema, determine qué proceso tiene el identificador abierto y ciérrelo.

Causa 3: Corrupción del sistema de archivos impide el acceso al archivo

No puede eliminar el archivo si el sistema de archivos está dañado. Para resolver este problema, ejecute la utilidad Chkdsk en el volumen de disco para corregir los errores.Sectores defectuosos en el disco, otro hardware defectuoso o problemas de software pueden dañar el sistema de archivos y colocar los archivos en un estado problemático. Las operaciones típicas pueden fallar en una variedad de formas. Cuando el sistema de archivos detecta el daño, registra un suceso en el registro de sucesos y normalmente recibe un mensaje que le pide que ejecute Chkdsk. Según la naturaleza del daño, Chkdsk puede o no podrá recuperar los datos del archivo; Sin embargo, Chkdsk devuelve el sistema de archivos a un estado internamente coherente. Para obtener información adicional acerca de cómo utilizar la utilidad Chkdsk, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
176646 Mensaje de error: el archivo o directorio está dañado... 
187941 Una explicación de CHKDSK y de los nuevos modificadores /C e /I 

Causa 4: Archivos que se encuentran en rutas de acceso que son más profundas que los caracteres MAX_PATH

Es podrán que no pueda abrir, editar o eliminar un archivo si hay problemas con la ruta de acceso del archivo.

Solución 1: Utilice un nombre 8.3 generado automáticamente para tener acceso al archivo

Para resolver este problema, es aconsejable utilizar el nombre 8.3 generado automáticamente para tener acceso al archivo. Esta solución puede ser la solución más sencilla si la ruta de acceso es profunda porque los nombres de carpeta son demasiado largos. Si la ruta 8.3 es demasiado larga o si los 8.3 nombres se han deshabilitado en el volumen, vaya a la solución 2. Para obtener información adicional acerca de cómo deshabilitar los nombres de archivo 8.3 en volúmenes NTFS, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
121007 Cómo deshabilitar la creación de 8.3 nombres en particiones NTFS 

Solución 2: Cambiar el nombre o mover una carpeta profunda

Cambiar el nombre de la carpeta para que ya no existen los archivos de destino que sean más profundos que MAX_PATH. Si lo hace, parten de la carpeta raíz (o cualquier otro lugar conveniente) y, a continuación, cambiar el nombre de las carpetas para que tengan nombres más cortos. Si este paso no resuelve el problema (por ejemplo, si un archivo tiene una profundidad mayor de 128 carpetas), vaya a solución 4.

Resolución 3: Asignar una unidad a una carpeta en la estructura de la ruta de acceso

Asigne una unidad a una carpeta dentro de la estructura de la ruta de acceso de la carpeta o el archivo de destino. Este método reduce la ruta de acceso virtual.Por ejemplo, suponga que tiene una ruta de acceso que tiene la siguiente estructura:
\\ServerName\SubfolderName1\SubfolderName2\SubfolderName3\SubfolderName4\...
En esta ruta, el número total de caracteres es más de 255 caracteres. Acortar la longitud de esta ruta, a 73 caracteres, asigne una unidad a SubfolderName4.

Resolución 4: Utilizar un recurso compartido de red que es tan profundo como la carpeta

Si la resolución de 1, 2 y 3 no es conveniente o no resuelve el problema, cree un recurso compartido de red que es como profundidad en el árbol de carpetas que se puede y cambie el nombre de las carpetas con acceso al recurso compartido.

Resolución 5: Utilizar una herramienta que puede atravesar profundidad rutas

Muchos programas de Windows esperan que la longitud de la ruta de acceso máxima sea inferior a 255 caracteres. Por lo tanto, estos programas sólo asignan almacenamiento interno suficiente para controlar estas rutas de acceso típicas. NTFS no tiene este límite y puede contener rutas de mucho más tiempo.Puede experimentar este problema si crea un recurso compartido en algún momento en la estructura de carpetas que ya es bastante profunda y, a continuación, cree una estructura profunda a continuación que señala utilizando el recurso compartido. Es podrán que algunas herramientas que funcionan localmente en el árbol de carpetas no pueda cruzar el árbol entero partiendo desde la raíz. Tendrá que utilizar estas herramientas de una manera especial para que puedan cruzar el recurso compartido. (La documentación de la API CreateFile describe un método para cruzar el árbol entero en esta situación).Normalmente, puede administrar los archivos utilizando el software que los crea. Si tiene un programa que puede crear archivos que son más profundos que MAX_PATH, normalmente puede utilizar ese mismo programa para eliminar o administrar los archivos. Normalmente puede eliminar los archivos creados en un recurso compartido utilizando el mismo recurso compartido.

Causa 5: El nombre de archivo incluye un nombre reservado en el espacio de nombres de Win32

Si el nombre de archivo incluye un nombre reservado (por ejemplo, "lpt1") en el espacio de nombres de Win32, no podrá eliminar el archivo. Para resolver este problema, utilice un programa Win32 no cambiarle el nombre. Puede utilizar una herramienta POSIX o cualquier otra herramienta que utilice la sintaxis interna adecuada para utilizar el archivo.Además, puede utilizar algunos comandos integrados para omitir las comprobaciones de nombre reservado de Win32 típicas si utiliza una sintaxis determinada para especificar la ruta de acceso del archivo. Por ejemplo, si utiliza el comando en Windows XP, puede eliminar un archivo denominado "lpt1" Si especifica la ruta de acceso completa del archivo utilizando la siguiente sintaxis especial:
del \\?\c:\ruta_de_acceso_al_archivo\lpt1
Para obtener más información acerca de cómo eliminar archivos con nombres reservados bajo Windows NT y Windows 2000, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base: 
120716 Cómo quitar archivos con nombres reservados en Windows 
Para obtener más información acerca de cómo eliminar archivos con nombres reservados bajo Windows XP, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base: 
315226 Cómo quitar archivos con nombres reservados en Windows XP 
Si abre un identificador a un archivo utilizando el mecanismo CreateFile de Win32 típico, ciertos nombres de archivo están reservados para los dispositivos de DOS del estilo anterior. Por compatibilidad con versiones anteriores, no se permiten estos nombres de archivo y no pueden crearse utilizando las llamadas típicas de archivo Win32. Sin embargo, este problema no es una limitación de NTFS.Puede utilizar un programa Win32 para omitir las comprobaciones de nombre típicas que se realizan cuando un archivo se crea (o elimina) utilizando la misma técnica que utiliza para cruzar carpetas que son más profundas que MAX_PATH. Además, algunas herramientas POSIX no están sujetos a estas comprobaciones de nombres.

Causa 6: El nombre de archivo incluye un nombre no válido en el espacio de nombres de Win32

Es podrán que no pueda eliminar un archivo si el nombre de archivo incluye un nombre no válido (por ejemplo, el nombre de archivo tiene un espacio o un punto final o el nombre del archivo está formado por sólo un espacio). Para resolver este problema, utilice una herramienta que utiliza la sintaxis interna adecuada para eliminar el archivo. Puede utilizar el "\\? \" sintaxis con algunas herramientas para funcionar en estos archivos, por ejemplo:
SUPR "\\?\c:\ruta_al_archivo_que contiene un final.txt "
La causa de este problema es similar a la 4. Sin embargo, si utiliza la sintaxis típica de Win32 para abrir un archivo que tiene espacios o puntos finales en su nombre, los espacios o puntos finales se eliminan antes de abrir el archivo real. Por lo tanto, si tiene dos archivos en la misma carpeta llamados "AFile.txt" y "AFile.txt" (Observe el espacio después del nombre de archivo), si intenta abrir el segundo archivo utilizando llamadas Win32 estándar, se abra el primer archivo. De forma similar, si tiene un archivo cuyo nombre es simplemente "" (un carácter de espacio) e intenta abrirlo utilizando llamadas Win32 estándar, abrir la carpeta del archivo principal en su lugar. En esta situación, si intenta cambiar la configuración de seguridad de estos archivos, cualquiera no puede hacerlo, o quizá cambie inesperadamente la configuración de varios archivos. Si se produce este comportamiento, puede pensar que tiene permiso para un archivo que realmente tiene una ACL restrictiva.

Causas combinadas

A veces, puede experimentar combinaciones de estas causas, lo que pueden hacer el procedimiento para eliminar un archivo más complejo. Por ejemplo, si inicia sesión como administrador del equipo, puede experimentar una combinación de la causa 1 (no tiene permisos para eliminar un archivo) y la causa 5 (el nombre de archivo contiene un carácter final que acceso al redirigirse a otro archivo o archivo que no existe) y no pueda eliminar el archivo. Si intenta resolver la causa 1 tomando posesión del archivo y agregar los permisos, todavía no es capaz de eliminar el archivo porque el editor de ACL en la interfaz de usuario no puede acceder al archivo adecuado debido a la causa 6.En esta situación, puede utilizar la utilidad Subinacl con elconmutador de /onlyfile (esta utilidad se incluye en el Kit de recursos) a cambio de propiedad y los permisos en un archivo que lo contrario es inaccesible, por ejemplo:
Subinacl /onlyfile "\\?\c:\path_to_problem_file" /setowner =dominio\Administrador \\nombreDeEquipo\nombreDeServicio =dominio\Administrador= F
Note Este comando es una sola línea de comando que se ha ajustado para mejorar la legibilidad.Esta línea de comandos de ejemplo modifica el archivo C:\path_to_problem_file que contiene un espacio al final para que eldominio\ cuenta deAdministrador es el propietario del archivo y esta cuenta tiene control total sobre el archivo. Ahora puede eliminar este archivo mediante el comando con la misma sintaxis "\\?\".