Cuando intenta eliminar un archivo o carpeta que está en uso por un proceso, aparece el cuadro de diálogo Archivo en uso que muestra el nombre del programa que ha bloqueado el archivo.
Sin embargo, hay casos en los que el cuadro de diálogo "Archivo en uso" no muestra el nombre del proceso que tiene un bloqueo en el archivo que está intentando eliminar. En algunos casos, el cuadro de diálogo mostrará "la acción no se puede completar porque el archivo está abierto en otro proceso“.
![Encuentre qué proceso ha bloqueado un archivo](/f/c33ebd7b892a1c69cb8cbd1609bafc44.png)
Para investigar procesos y archivos bloqueados, Windows Sysinternals Process Explorer es probablemente la primera opción que se les ocurre a la mayoría de los usuarios. Sin embargo, hay dos soluciones integradas para mostrar la lista actual de archivos abiertos junto con los nombres de los procesos correspondientes.
Encuentre qué proceso ha bloqueado un archivo usando:
- Monitor de recursos (resmon.exe)
- Explorador de procesos de Microsoft Sysinternals
-
Manejar desde Microsoft Sysinternals
- Encuentre el identificador de archivo a través del menú contextual
-
Herramienta de consola incorporada Openfiles.exe
- Habilitar el seguimiento de identificadores de archivos locales
- Ver archivos abiertos y los nombres de procesos correspondientes
- Desconectar archivos abiertos de carpetas compartidas
- OpenedFilesView de Nirsoft.net (tercero)
1. Monitor de recursos
Resource Monitor (resmon.exe) es una herramienta incorporada que tiene muchas funciones útiles. Con Resource Monitor, puede rastrear el uso actual de la red e Internet, ver identificadores asociados para archivos bloqueados, así como administrar procesos tal como lo haría con el Administrador de tareas.
Para encontrar el nombre del proceso que tiene un archivo bloqueado, haga clic en la pestaña CPU, escriba el nombre del archivo o parte de él en el cuadro de texto Asignaturas asociadas.
Hemos cubierto el Monitor de recursos anteriormente. Consulte estos artículos:
- ¿Cómo utilizar el Monitor de recursos para encontrar qué proceso ha bloqueado un archivo?
- ¿Qué programa utiliza todo su ancho de banda de Internet? Utilice Resource Monitor para encontrarlo
2. Explorador de procesos
Explorador de procesos no necesita presentación. En Process Explorer, todo lo que necesita hacer es usar la función Buscar y escribir el nombre del archivo. Esto muestra el proceso que está accediendo al archivo.
Desde la vista del panel inferior, puede cerrar el identificador del archivo si es necesario.
Debe ejecutar Process Explorer como administrador para administrar los procesos que se ejecutan en un nivel elevado. Para elevar Process Explorer, haga clic en el menú Archivo → Mostrar detalles de todos los procesos.
Consulte estos artículos relacionados con Process Explorer:
- ¿Cómo eliminar un archivo o carpeta imposible de eliminar en Windows?
- Encuentre qué programa está usando su cámara web actualmente
- ¿Cómo encontrar qué programa provocó un mensaje de error desconocido?
- ¿Qué significa Error al enumerar objetos en el contenedor?
3. Manejar desde Windows Sysinternals
Resolver es una utilidad de Microsoft Sysinternals que muestra información sobre identificadores abiertos para cualquier proceso en el sistema. Puede usarlo para ver los programas que tienen un archivo abierto o para ver los tipos de objetos y los nombres de todos los identificadores de un programa. Handle es como una versión de línea de comandos de Explorador de procesos.
Nota: El mango v4.21 tiene un pequeño error donde siempre informa "No se encontraron identificadores coincidentes" si la letra de la unidad está en mayúsculas. Espero que Microsoft lo solucione en la próxima actualización.
Desde un símbolo del sistema de administración ventana, use la sintaxis de la línea de comandos para encontrar el proceso que tiene el archivo abierto:
handle.exe -a -u nombre_archivo_con_ruta
Si el nombre del archivo contiene espacios, escríbalo entre comillas dobles.
Ejemplo:
handle.exe -a -u "c: \ users \ ramesh \ desktop \ Mandate-form.pdf"
(Es posible que mencionar el nombre del archivo sin la ruta no funcione necesariamente en todas las situaciones. Es recomendable incluir siempre la ruta completa).
La salida muestra el nombre del proceso, el identificador del proceso, el nombre de usuario, el nombre del archivo bloqueado (objetivo) con la ruta.
Identificador de Sysinternals: argumentos de la línea de comandos
uso: manejar [[-a [-l]] [-u] | [-c [-y]] | [-s]] [-p |] [nombre] [-nobanner]
-a | Volcar toda la información de la manija. |
-l | Simplemente muestre los identificadores de las secciones respaldadas por archivos de paginación. |
-C | Cierra el identificador especificado (interpretado como un número hexadecimal). Debe especificar el proceso por su PID. ADVERTENCIA: Las manijas de cierre pueden causar inestabilidad en la aplicación o el sistema. |
-y | No solicite la confirmación del control cercano. |
-s | Imprime el recuento de cada tipo de manija abierta. |
-u | Muestra el nombre de usuario propietario al buscar identificadores. |
-pags | Dump maneja pertenecientes al proceso (nombre parcial aceptado). |
nombre | Busque identificadores de objetos con |
-nobanner | No muestre el banner de inicio ni el mensaje de derechos de autor. |
Ningún argumento volcará todas las referencias de archivo.
Agregar control de Sysinternals al menú contextual
Puede agregar Sysinternals Handle al menú contextual de los archivos para encontrar rápidamente el programa que ha bloqueado el archivo. Para agregarlo al menú contextual, siga estos pasos:
- Descargar Resolver desde el sitio de Microsoft Sysinternals.
- Copia los archivos handle.exe & handle64.exe a una carpeta, por ejemplo,
d: \ herramientas
- Copie las siguientes líneas de código en el Bloc de notas y guarde el archivo como
find_handle.vbs
a una ubicación permanente.'Ejecuta la utilidad Sysinternals Handle.exe con el argumento de nombre de archivo. '© Ramesh Srinivasan - https://winhelponline.com/blog. Fecha de creación: 29 de marzo de 2008. Fecha de actualización: 11 de junio de 2019. 'Para todas las versiones de Windows, incluida Windows 10 Option Explicit. Dim objShell, WshShell, objFSO, sBaseKey, sFilename. Establecer objShell = CreateObject ("Shell. Solicitud") Establezca WshShell = CreateObject ("WScript. Cáscara") Establezca objFSO = CreateObject ("Scripting. FileSystemObject ") Si WScript. Argumentos. Count = 0 Entonces sBaseKey = "HKCU \ Software \ Classes \ * \ shell \" WshShell. RegWrite sBaseKey & "FindHandle \", "Find Handle", "REG_SZ" WshShell. RegWrite sBaseKey & "FindHandle \ command \", "wscript.exe" & & _ WScript. ScriptFullName & & "" & & "% 1" &, "REG_SZ" De lo contrario, si objFSO.FileExists (WScript. Argumentos (0)) = Verdadero Entonces sFilename = lcase (WScript. Argumentos (0)) objShell. ShellExecute "cmd.exe", "/ k d: \ tools \ handle.exe -a -u" & _ & sFilename &, "", "runas", 1 End If. Terminara si
Nota: La ruta de Sysinternals Handle.exe está codificada como
d: \ herramientas \ handle.exe
en el script anterior. Si el programa se encuentra en una ruta diferente, modifique la ruta en el script en consecuencia. Para Windows de 64 bits, puede utilizar handle.exe o handle64.exe - Haga doble clic
find_handle.vbs
para agregar la entrada del menú contextual en el registro. Deberá hacer esto solo una vez. Pero, si reubica el script en una carpeta diferente, deberá hacer doble clic en él nuevamente para actualizar la ruta en el registro. - Verás el Buscar mango opción cuando hace clic con el botón derecho en un archivo. Al hacer clic en él, se iniciará el script que a su vez ejecuta handle.exe con el argumento del nombre de archivo para encontrar el proceso que tiene el archivo bloqueado.
Para quitar el Buscar mango entrada del menú contextual, inicie el Editor del registro (regedit.exe
) y elimine la siguiente clave:
HKEY_CURRENT_USER \ Software \ Classes \ * \ shell \ FindHandle
4. OpenFiles.exe: una herramienta de consola incorporada
Otra herramienta incorporada que usaremos es Openfiles.exe, una herramienta de consola que no es nueva en Windows. Se introdujo originalmente en 2000 como parte de las herramientas del Kit de recursos de Windows 2000/2003. Luego, esta utilidad se incluyó de forma predeterminada en Windows Vista y versiones posteriores (incluido Windows 10). Openfiles muestra la lista de archivos abiertos actualmente desde carpetas locales o compartidas, junto con el identificador del identificador y el nombre del ejecutable del proceso. Esta herramienta también le permite desconectar uno o más archivos que se abren de forma remota desde una carpeta compartida.
Habilitar el indicador global "Mantener lista de objetos" por primera vez
En primer lugar, para habilitar el seguimiento de los identificadores de archivos locales, debe activar el indicador "mantener la lista de objetos" ejecutando el siguiente comando desde el símbolo del sistema de administración.
archivos abiertos / local en
Verás el siguiente mensaje:
INFORMACIÓN: El indicador global del sistema "mantener lista de objetos" está habilitado actualmente.
Deberá ejecutar este comando solo por primera vez. Luego reinicie Windows para que el cambio surta efecto.
Ver archivos abiertos y los nombres de procesos correspondientes
Después de reiniciar Windows, desde un símbolo del sistema de administración ventana, escriba:
abrir archivos
Esto enumera el ID de archivo / identificador, el nombre del proceso y la lista de archivos abiertos localmente o abiertos de forma remota a través de puntos compartidos locales, en un formato de tabla.
Para ver la salida en formatos List o CSV, use el parámetro / query.
openfiles / query / FO LIST. archivos abiertos / consulta / FO CSV
Para copiar la salida al portapapeles, canalice la salida a Clip.exe como se muestra a continuación. Luego pegue la salida en el Bloc de notas o en cualquier otro editor de su elección.
archivos abiertos | clip
openfiles / query / FO LIST | clip. archivos abiertos / consulta / FO CSV | clip
Para obtener más información sobre cómo copiar la salida del símbolo del sistema al portapapeles o guardar la salida en un archivo, consulte el artículo ¿Cómo copiar el texto de salida del símbolo del sistema al portapapeles o guardarlo en un archivo?
Para saber si un programa está utilizando un archivo en particular (y saber qué programa), puede utilizar la siguiente línea de comandos.
archivos abiertos | Findstr / i
Ejemplo:
archivos abiertos | findtr / i eiffel
El comando anterior enumera todos los archivos abiertos que contienen la palabra "eiffel" en el nombre del archivo. En este ejemplo, Word 2016 tiene actualmente el bloqueo sobre el archivo "La Torre Eiffel.docx" (ID 4576).
Y el cuadro de diálogo "Archivo en uso" me dice lo mismo.
Desconecte los archivos abiertos de forma remota de la carpeta compartida.
Para desconectar archivos abiertos de la carpeta compartida para que pueda eliminarlos, cambiar el nombre del archivo o modificar el contenido, utilice el /disconnect
parámetro para cortar las conexiones a ese archivo. Aquí están las opciones de la línea de comandos.
OPENFILES / Desconectar [/ S sistema [/ U nombre de usuario [/ P [contraseña]]]] {[/ ID id] [/ A accedido por] [/ O openmode]} [/ OP openfile] Descripción: permite a un administrador desconectar archivos y carpetas que se han abierto de forma remota a través de un carpeta. Lista de parámetros: / S system Especifica el sistema remoto al que conectarse. / U [dominio \] usuario Especifica el contexto de usuario en el que se debe ejecutar el comando. / P [contraseña] Especifica la contraseña para el contexto de usuario dado. / ID id Especifica desconectar archivos abiertos por ID de archivo. Se puede utilizar el comodín "*". / A accessby Especifica desconectar todos los archivos abiertos por el valor "accessby". Se puede utilizar el comodín "*". / O openmode Especifica desconectar todos los archivos abiertos por el valor "openmode". Los valores válidos son lectura, escritura o lectura / escritura. Se puede utilizar el comodín "*". / OP openfile Especifica desconectar todas las conexiones de archivos abiertos creadas por un nombre específico de "archivo abierto". Se puede utilizar el comodín "*". /? Muestra este mensaje de ayuda. Ejemplos: OPENFILES / Disconnect /? OPENFILES / Desconectar / ID 1 OPENFILES / Desconectar / Un nombre de usuario OPENFILES / Desconectar / O Leer / Escribir OPENFILES / Desconectar / OP "c: \ Mi Documentos \ somedoc.doc "/ ID 234 OPENFILES / Disconnect / S system / U username / ID 5 OPENFILES / Disconnect / S system / U username / P contraseña /IDENTIFICACIÓN *
Openfiles.exe hace perfectamente el trabajo de enumerar todos los archivos abiertos junto con los nombres de los procesos, pero no puede eliminar los procesos a la fuerza. Sin embargo, esta excelente (pero pasada por alto) herramienta de consola incorporada puede resultar útil cuando desee encontrar rápidamente un nombre de proceso que esté usando un archivo, o para desconectar un archivo al que está accediendo a través de una carpeta compartida por un usuario de la red, sin depender de un tercero solución.
5. OpenFilesView
OpenFilesView de Nirsoft muestra la lista de todos los archivos abiertos en su sistema. Para cada archivo abierto, se muestra información adicional: valor de manejo, acceso de lectura / escritura / eliminación, posición del archivo, el proceso que abrió el archivo, y más... Opcionalmente, también puede cerrar uno o más archivos abiertos, o cerrar el proceso que abrió estos archivos.
Puede cerrar procesos de archivos seleccionados o cerrar identificadores de archivos seleccionados. El número de identificador se representa en valores hexadecimales, mientras que la herramienta de consola openfiles.exe lo muestra en el formato normal. Esta herramienta también le permite agregar una opción de menú contextual para encontrar rápidamente el proceso que actualmente está usando un archivo, a través del menú contextual. La opción de menú contextual / soporte de línea de comandos, considero, es una de las características más útiles que ofrece OpenedFilesView.
Una pequeña solicitud: si le gustó esta publicación, por favor comparta esto.
Una "pequeña" parte tuya seriamente ayudaría mucho con el crecimiento de este blog. Algunas buenas sugerencias:- Pin it!
- Compártelo en tu blog favorito + Facebook, Reddit
- ¡Tuitealo!
![Ezoico](/f/e21ab1194daa0428d27d48cfeefe4507.png)