Buscar

Windows: Cómo saber que proceso tiene abierto un archivo

En ocasiones, podemos encontrarnos con que necesitamos saber el proceso que tiene abierto un fichero o carpeta.

Por ejemplo, si intentamos mover o renombrar un archivo o carpeta y este está siendo usado por otro proceso, podemos encontrarnos con un error similar a este:

La acción no se puede completar porque otro programa tiene abierto el archivo

Veamos un ejemplo:

1) Abrimos una ventana de CMD y nos situamos en la carpeta: C:\SYSADMIT

2) Abrimos el explorador de ficheros y nos situamos en la carpeta: C:\SYSADMIT e intentamos eliminar la carpeta. Nos aparecerá el mensaje:

La acción no se puede completar porque otro programa abrió la carpeta o uno de sus archivos.

Cierre la carpeta o el archivo e inténtelo de nuevo.

Windows: Cómo saber que proceso tiene abierto un archivo

Veamos distintas formas de saber el proceso que tiene abierto un archivo.

A continuación, disponemos del siguiente vídeo realizado por Pol Padrisa (@polpadrisa), donde podemos ver el detalle de funcionamiento de forma visual:


Podéis examinar y suscribiros al canal de Youtube de SYSADMIT en el siguiente enlace:

https://www.youtube.com/c/SYSADMIT

y aquí tenéis el contenido del post con el detalle y comandos utilizados:



Método 1: Monitor de recursos.


La herramienta "monitor de recursos" se introduce en Windows Vista y Windows Server 2008 y nos permite motorizar el sistema.

Entre las utilidades que integra, podemos ver el proceso que tiene abierto un archivo o carpeta en cuestión.

Para abrir el monitor de recursos, podemos hacerlo abriendo el "administrador de tareas" (taskmgr.exe) y hacer clic en la opción: "Abrir el monitor de recursos"


Windows: Cómo saber que proceso tiene abierto un archivo

Otra forma, es abrir el "monitor de recursos", directamente.

Para ello, bastará con ejecutar: perfmon.exe /res

Una vez abierto el "monitor de recursos", nos dirigimos a la pestaña CPU y en el apartado "Identificadores asociados", veremos la caja de búsqueda, allí, siguiendo el ejemplo anterior, escribiremos: C:\SYSADMIT y veremos el proceso que está bloqueando esta ruta: cmd.exe.


Windows: Cómo saber que proceso tiene abierto un archivo

Método 2: Process Explorer (Sysinternals)


Utilizando la herramienta gratuita: "Process Explorer" de Sysinternals, podemos averiguar el proceso que tiene abierto un archivo o carpeta.

Para ello, deberemos descargarnos la herramienta "Process Explorer":


procexp64.exe, para sistemas operativos de 64bits.
procexp.exe, para sistemas operativos de 32bits.

Una vez ejecutada la herramienta, nos dirigiremos al menú: "Find", "Find Handle or DLL" y nos aparecerá una ventana.

En la ventana, escribiremos la ruta a verificar y pulsaremos el botón de "Search", allí nos mostrará el proceso que bloquea la carpeta.

Windows: Cómo saber que proceso tiene abierto un archivo

Método 3: Handle (Sysinternals)


Handle es una de las herramientas de SysInternals que también podemos descargar y utilizar de forma gratuita.

Handle se deberá ejecutar desde linea de comandos.

También podemos descargar la herramienta, en el enlace anterior, indicado en el método 2.

Su funcionamiento es muy sencillo, igual que con "Process Explorer", handle, dispone de los siguientes ejecutables:

handle64.exe, para sistemas operativos de 64bits. 
handle.exe, para sistemas operativos de 32bits.

A continuación, ejecutamos
handle seguido de la ruta que queremos ver el proceso que lo está utilizando:

Windows: Cómo saber que proceso tiene abierto un archivo

47 comentarios:

  1. muy util el proceso, gracias por subirlo

    ResponderEliminar
  2. gracias porfin joeee¡¡¡¡¡¡¡¡¡¡aleluya mae mia muchas gracias señor.

    ResponderEliminar
  3. Por fin logre renombrar una de mis carpetas, muchas gracias.

    ResponderEliminar
  4. Lizgirl10Star me podes decir que proceso te estaba bloqueando las carpetas?

    ResponderEliminar
  5. por que aparecen dos carpetas de
    archivo de programas
    archivo de porgramas (x86)

    ResponderEliminar
    Respuestas
    1. Hola Manuel,

      Tu sistema operativo es de 64bits, por tanto tienes dos carpetas de archivos de programa:

      archivos de programa: Para programas de 64bits.
      archivos de programa (x86): Para programas de 32bits.

      Un saludo,

      Xavi.

      Eliminar
  6. hola no puedo eliminar una carpeta aun usando los anteriores metodos simplemente no se puede borrar

    ResponderEliminar
  7. WOW! Increiblemente útil este post, claro y conciso!!!!

    ResponderEliminar
  8. Muchas gracias. No te haces una idea de la de veces que he acabado reiniciando por esto. Creo que Windows debería incorporar un botón para forzar al proceso a dejar de usar ese archivo.

    ResponderEliminar
  9. Gracias me sirvió lo que explicas en las primeras 3 pantallas

    ResponderEliminar
    Respuestas
    1. ¡Gracias! Me alegro que te haya funcionado.

      Un saludo,

      Xavi.

      Eliminar
  10. Copiaron y pegaron esta entrada en:

    https://www.geekno.com/como-saber-que-proceso-tiene-abierto-un-archivo-en-windows.html

    Y allá se dicen llamar "Geeks".

    ResponderEliminar
    Respuestas
    1. Hola Antonio José,

      Muchas gracias amigo por el aviso.

      Ya me he puesto en contacto con ellos para que citen la fuente.

      ¡Un saludo!

      Xavi.

      Eliminar
  11. Respuestas
    1. Gracias a ti por tu comentario. Me alegro que te haya funcionado.

      Un saludo,

      Xavi.

      Eliminar
  12. Muchas gracias :)

    Puesta en practica para servicios de desarrollo (Famous Apache)

    ResponderEliminar
  13. Siempre quise saber este truco, por fin lo aprendo. Lo que nunca entenderé es por que cuando la carpeta te da el error, no te dice que proceso que lo esta usando... así es mas sencillo. Muchas gracias!!!

    ResponderEliminar
    Respuestas
    1. Gracias a ti por tu comentario.

      Me alegro que te haya funcionado.

      Un saludo,

      Xavi.

      Eliminar
  14. Qué hago si el propio explorar es quien está usando el archivo que quiero eliminar??

    ResponderEliminar
    Respuestas
    1. Si cierras la sesión y vuelves a iniciar sesión, el explorer se cierra y se abre de nuevo, quizás así lo puedas eliminar.

      Un saludo,

      Xavi.

      Eliminar
    2. no me funciona lo de cerrar sesión
      existe alguna otra solución?

      Eliminar
    3. Puedes probar de arrancar con el pendrive de instalación de Windows, y acceder a las opciones de recuperación, allí obtener un CMD y eliminar el fichero.

      Puedes seguir este procedimiento para obtener un CMD desde el proceso de instalación de Windows: Iniciamos desde le pendrive de instalación de Windows, seleccionamos idioma, seleccionamos "Reparar equipo", "Solucionar problemas", "Símbolo del sistema":

      Un saludo,

      Xavi.

      Eliminar
  15. uuuuuuuraaaaaaaaa!!!!! Ya eliminé la carpeta y ese molestoso mensajeeeee!!! Mil Graciasssss

    ResponderEliminar
  16. Hola master! me baje el procepcx y pude identificar que el pen drive estaba siendo usado por un proceso el tema es que para anular ese proceso me dice que no tengo autorizacion, sabes como hacer para habilitar el permiso para finalizar ese proceso?

    ResponderEliminar
    Respuestas
    1. Faltaría saber de que proceso se trata y si el proceso se ejecuta en el contexto de usuario o de sistema. Si es un proceso de sistema puede que no puedas detenerlo.

      Un saludo,

      Xavi.

      Eliminar
  17. Excelente, me funcionó el de process explorer muy bien

    ResponderEliminar
  18. Tremendo!

    No sabes como me ayudaste con este tip.

    Un saludo!

    ResponderEliminar
  19. MUCHAS GRACIASSSSS <3333

    ResponderEliminar
  20. Bárbaro y Excelso! Junio 2021 y después de tantos años de usar sistemas Windows y he encontrado una gran solución a este tema de tantos años! En verdad nos has ayudado a muchísimos con esté artículo! :DDD
    Sí es posible, o más bien no sé si exista un tema similar con los servicios de Windows (Por ejemplo nunca he podido detener el servicio de "Avira Antivirus (C:\Program Files (x86)\Avira\AntiVir Desktop\avguard.exe)" De hecho en services.msc aparecen deshabilitadas las opciones de "Detener, Iniciar o Reiniciar", he probado correr una shell con privilegios de "SYSTEM" precisamente con otra utilidad de SysInternals (PsExec), pero no, con scripts de Powershell, etc.. Y bueno jamás lo he conseguido.

    Existe alguna herramienta de apoyo igualmente para realizar o verificar los procesos que impiden esto? Gracias de antemano! Excelente Artículo! Un gran saludo desde México!

    ResponderEliminar
    Respuestas
    1. Hola,

      Puedes probar con la herramienta "Autoruns" que está disponible en la web de Microsoft.

      Con "Autoruns" podrás definir que programas quieres que se inicien al iniciar el equipo.

      Un saludo,

      Xavi.

      Eliminar
    2. Xavi, primeramente muchas gracias por responderme! :D Y bueno, y orientándote un poco más del caso que te comentaba, este antivirus por ejemplo utiliza cosas que no conozco bien, se que les llaman "HOOKS" en Windows y algo así cómo "Shadows" que son un nivel más arriba de los servicios, inician con el Kernel del Sistema, por esto es que las opciones de "Detener, Iniciar o Reiniciar" están deshabilitadas, si usara "Autoruns" para verificar no me serviría, inclusive con valores en el registro puedo "Deshabilitar" dicho servicio pero quedaría definitivamente así, al menos durante el tiempo que esté la sesión abierta del Usuario en Windows y eso no busco, utilizo el servicio de "WSMan.Management - Windows Remote Management" vía PowerShell y administro por consola ciertas cosas de los equipos en la red de la empresa, y bueno, no entiendo cómo es posible que con el UAC Windows si permita detener el servicio y vía consola, ya sea remota o localmente en el equipo, no es posible hacer esto, que es lo que Windows hace que le permite tener este compartamiento? Pensé que tenía que ver con "CACLS" y la lista de control de acceso DACL en las carpetas de Instalación, pero tampoco, cómo te comentaba, inclusive he corrido shell con privilegios de SYSTEM y ni así pude detener el servicio por consola, Ejemplo "Net Stop ServiceName" y con un simple "Click Secundario del Ratón" si puedo detener el servicio? Espero haberme explicado un poco mejor y si conocieras alguna utilidad, así como tu excelente artículo y con alguna herramienta de terceros, poder detener un "Servicio Indetenible" por consola de Windows o Script de Powershell, etc.

      Desde ya gracias nuevamente por tu valiosa atención y apoyo!!

      Eliminar
    3. Hola,

      Por lo que he entendido de tu comentario, lo que quieres es poder detener un servicio que no permite ser detenido desde GUI, o con el comando: Net Stop, etc...

      Puedes utilizar uno de los siguientes métodos:

      ----- Método 1 -----:

      sc queryex Nombre-del-servicio

      y de la salida del comando, apuntas su PID.

      A continuación, ejecutas:

      taskkill /F /PID Numero-de-PID

      Ese número de PID es el que has obtenido del comando anterior.

      ----- Método 2 -----:

      Inicias el equipo en modo seguro.

      Abres regedit y te sitúas en: HKLM - System - ControlSet001 - Services

      Buscas el nombre del servicio.

      Cambiar el valor de la clave "Start" de 3 a 4.

      El valor 4 significa: Disabled.

      Un saludo,

      Xavi.

      Eliminar
  21. Imposible salir de aquí sin agradecerlo. Muuuchas gracias, me has ahorrado una comedura de coco muy seria :)

    ResponderEliminar