Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe por qué no se puede eliminar un archivo o una carpeta en un volumen del sistema de archivos NTFS. También proporciona ayuda para resolver este problema.
Número de KB original: 320081
Nota:
Internamente, NTFS trata las carpetas como un tipo especial de archivo. Por lo tanto, el archivo de palabras de este artículo indica un archivo o una carpeta.
Causa 1: El archivo usa una ACL
No se puede eliminar un archivo si el archivo usa una lista de control de acceso (ACL). Para resolver este problema, cambie los permisos en el archivo. Es posible que tenga que tomar posesión de los archivos para cambiar los permisos.
Los administradores tienen la capacidad implícita de tomar posesión de cualquier archivo, incluso si no se les ha concedido explícitamente ningún permiso al archivo. Los propietarios de archivos tienen la capacidad implícita de modificar los permisos de archivo, incluso si no se les conceden explícitamente permisos al archivo. Por lo tanto, es posible que tenga que tomar posesión de un archivo, concederse permisos para eliminar el archivo y, a continuación, eliminar el archivo.
No puede usar determinadas herramientas de seguridad para mostrar o modificar permisos porque el archivo tiene una ACL no canónica
Para solucionar este problema, use otra herramienta (por ejemplo, una compilación posterior de Cacls.exe).
Las entradas de Control de acceso (ACL) de una ACL tienen una secuencia preferida determinada en función de su tipo. Por ejemplo, los ACE que deniegan el acceso suelen aparecer antes de los ACE que conceden acceso. Sin embargo, nada impide que un programa escriba una ACL que tenga ACL en cualquier secuencia arbitraria. En algunas versiones anteriores de Windows, se produjeron problemas cuando Windows intentó leer estas ACL no canónicas. A veces no puedes modificar estas ACL correctamente mediante el editor gráfico de seguridad del Explorador de Microsoft Windows. Este problema se ha corregido en versiones posteriores de Windows. Si experimenta este problema, use la versión más reciente de Cacls.exe. Incluso si no puede mostrar o editar una ACL en su lugar, puede escribir una nueva ACL para obtener acceso al archivo.
Causa 2: El archivo se está usando
No se puede eliminar un archivo si se usa el archivo. Para resolver este problema, determine el proceso que tiene el identificador abierto y, a continuación, cierre ese proceso.
En función de cómo se abra el archivo, es posible que no pueda eliminar un archivo que esté en uso. Por ejemplo, el archivo está abierto para el acceso exclusivo en lugar del acceso compartido. Puede usar varias herramientas para determinar los procesos que tienen identificadores abiertos en los archivos siempre que desee.
Los síntomas de este problema pueden variar. Puede usar el comando Eliminar para eliminar un archivo. Pero el archivo no se elimina hasta que el proceso que tiene abierto el archivo libera el archivo. Además, es posible que no pueda acceder al cuadro de diálogo Seguridad de un archivo que esté pendiente de eliminación. Para resolver este problema, determine el proceso que tiene el identificador abierto y, a continuación, cierre ese proceso.
Causa 3: Daños en el sistema de archivos impide el acceso al archivo
No se 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.
Los siguientes motivos pueden dañar el sistema de archivos y colocar archivos en un estado problemático:
- Sectores incorrectos en el disco
- Otro hardware defectuoso
- Errores de software
Las operaciones típicas pueden producir errores de varias maneras. Cuando el sistema de archivos detecta daños, registra un evento en el registro de eventos y normalmente recibe un mensaje que le pide que ejecute Chkdsk. En función de la naturaleza de los daños, Chkdsk puede recuperar o no los datos del archivo. Sin embargo, Chkdsk devuelve el sistema de archivos a un estado coherente internamente.
Causa 4: Los archivos existen en rutas de acceso que son más profundas que MAX_PATH caracteres
No se puede abrir, editar ni eliminar un archivo si hay problemas con la ruta de acceso del archivo.
Resolución 1: Usar un nombre 8.3 generado automáticamente para acceder al archivo
Para resolver este problema, es posible que desee usar el nombre 8.3 generado automáticamente para acceder al archivo. Esta resolución puede ser la resolución más sencilla si la ruta de acceso es profunda porque los nombres de carpeta son demasiado largos. Si la ruta de acceso 8.3 también es demasiado larga o si los nombres 8.3 se han deshabilitado en el volumen, vaya a Resolución 2. Para obtener más información sobre cómo deshabilitar los nombres de archivo 8.3 en volúmenes NTFS, vea Cómo deshabilitar la creación de nombres 8.3 en particiones NTFS.
Resolución 2: Cambiar el nombre o mover una carpeta profunda
Cambie el nombre de la carpeta para que los archivos de destino que sean más profundos de los MAX_PATH
que ya no existen. Si lo hace, comience en la carpeta raíz o en cualquier otro lugar conveniente. A continuación, cambie el nombre de las carpetas para que tengan nombres más cortos. Si este paso no resuelve este problema, por ejemplo, si un archivo tiene más de 128 carpetas en profundidad, vaya a Resolució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 del archivo o carpeta de destino. Este método acorta la ruta de acceso virtual.
Por ejemplo, supongamos que tiene una ruta de acceso estructurada de la siguiente manera:
\\ServerName\SubfolderName1\SubfolderName2\SubfolderName3\SubfolderName4\...
En esta ruta de acceso, el número total de caracteres es superior a 255 caracteres. Para abreviar la longitud de esta ruta de acceso, a 73 caracteres, asigne una unidad a SubfolderName4.
Resolución 4: Usar un recurso compartido de red tan profundo como la carpeta
Si las resoluciones 1, 2 y 3 no son cómodas o no resuelven el problema, cree un recurso compartido de red tan profundo en el árbol de carpetas como pueda. A continuación, cambie el nombre de las carpetas accediendo al recurso compartido.
Resolución 5: Usar una herramienta que pueda atravesar rutas de acceso profundas
Muchos programas de Windows esperan que la longitud máxima de la ruta de acceso sea inferior a 255 caracteres. Estos programas solo asignan suficiente almacenamiento interno para controlar estas rutas de acceso típicas. NTFS no tiene este límite y puede contener rutas de acceso mucho más largas.
Puede experimentar este problema si crea un recurso compartido en algún momento de la estructura de carpetas que ya es bastante profundo y, a continuación, crea una estructura profunda por debajo de ese punto mediante el recurso compartido. Es posible que algunas herramientas que funcionan localmente en el árbol de carpetas no puedan atravesar todo el árbol a partir de la raíz. Es posible que tenga que usar estas herramientas de forma especial para que puedan atravesar el recurso compartido. La documentación de CreateFile API describe un método para recorrer todo el árbol en esta situación.
Normalmente, puede administrar archivos mediante el software que los crea. Si tiene un programa que puede crear archivos más profundos que MAX_PATH
, normalmente puede usar ese mismo programa para eliminar o administrar los archivos. Normalmente, puede eliminar archivos creados en un recurso compartido mediante el mismo recurso compartido.
Causa 5: el nombre de archivo incluye un nombre reservado en el espacio de nombres Win32
Si el nombre de archivo incluye un nombre reservado en el espacio de nombres Win32, como lpt1, no se puede eliminar el archivo. Para resolver este problema, use un programa que no sea Win32 para cambiar el nombre del archivo. Puede usar una herramienta POSIX o cualquier otra herramienta que use la sintaxis interna adecuada para usar el archivo.
Además, puedes usar algunos comandos integrados para omitir las comprobaciones típicas de nombres reservados de Win32 si usas una sintaxis determinada para especificar la ruta de acceso del archivo.
Si abre un identificador para un archivo mediante el mecanismo típico De Win32 CreateFile, ciertos nombres de archivo están reservados para dispositivos DOS de estilo antiguo. Por motivos de compatibilidad con versiones anteriores, estos nombres de archivo no se permiten y no se pueden crear mediante llamadas de archivo Win32 típicas. Este problema no es una limitación de NTFS.
Puedes usar un programa Win32 para omitir las comprobaciones de nombres típicas que se realizan cuando se crea o elimina un archivo mediante la misma técnica que usas para recorrer las carpetas más profundas que MAX_PATH
. Además, algunas herramientas POSIX no están sujetas a estas comprobaciones de nombres.
Causa 6: el nombre de archivo incluye un nombre no válido en el espacio de nombres Win32
No se puede eliminar un archivo si el nombre de archivo incluye un nombre no válido. Por ejemplo, el nombre de archivo tiene un espacio final o un punto final, o el nombre de archivo se compone solo de un espacio. Para resolver este problema, use una herramienta que use la sintaxis interna adecuada para eliminar el archivo. Puede usar la "\\?\"
sintaxis con algunas herramientas para operar en estos archivos. Este es un ejemplo:
del "\\?\c:\<path_to_file_that contains a trailing space.txt>"
La causa de este problema es similar a la causa 4. Si usas la sintaxis típica de Win32 para abrir un archivo que tenga espacios finales o puntos finales en su nombre, los espacios o puntos finales se quitan antes de que se abra el archivo real. Por ejemplo, tiene dos archivos en la misma carpeta denominada AFile.txt
y AFile.txt
, anote el espacio después del nombre de archivo. Si intenta abrir el segundo archivo mediante llamadas estándar de Win32, abra el primer archivo en su lugar. Del mismo modo, si tienes un archivo cuyo nombre es solo un carácter de espacio e intentas abrirlo mediante llamadas estándar de Win32, abres la carpeta principal del archivo en su lugar. En esta situación, si intenta cambiar la configuración de seguridad en estos archivos, es posible que no pueda hacerlo, o bien puede cambiar inesperadamente la configuración en archivos diferentes. Si se produce este comportamiento, puede pensar que tiene permiso para un archivo que realmente tiene una ACL restrictiva.
Combinaciones de causas
A veces, puede experimentar combinaciones de estas causas. Puede hacer que el procedimiento elimine 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 hace que el acceso a archivos se redirija a un archivo diferente o inexistente) y no se puede eliminar el archivo. Si intenta resolver la causa 1 tomando posesión del archivo y agregando permisos, es posible que todavía no pueda eliminar el archivo, ya que el editor de ACL de la interfaz de usuario no puede acceder al archivo adecuado debido a la causa 6.
En esta situación, puede usar la utilidad Subinacl con el /onlyfile
modificador (esta utilidad se incluye en el Kit de recursos) para cambiar la propiedad y los permisos de un archivo que de lo contrario no es accesible. Este es un ejemplo:
subinacl /onlyfile "\\?\c:\<path_to_problem_file>" /setowner= domain\administrator /grant= domain\administrator=F
Nota:
Este comando es una sola línea de comandos que se ha ajustado para mejorar la legibilidad.
Esta línea de comandos de ejemplo modifica el C:\<path_to_problem_file>
archivo que contiene un espacio final para que la cuenta domain\administrator sea el propietario del archivo y esta cuenta tenga control total sobre el archivo. Ahora puede eliminar este archivo mediante el comando Del con la misma "\\?\"
sintaxis.