¿Hay alguna manera de enumerar todos los archivos que están abiertos actualmente por un proceso específico en Windows?
Me refiero a los archivos que tienen un fopen
, pero nunca obtuvieron un fclose
por un proceso específico.
Traté de usar Sysinternals Process Monitor, pero no pude encontrar la manera de enumerar los archivos abiertos actuales, pero solo cuando ocurre la apertura.
Respuestas:
Puede probar Sysinternals Process Explorer en lugar de Process Monitor. Process Monitor está diseñado para observar qué procesos hacen como lo hacen entonces. Process Explorer es más para ver el estado actual de los procesos; es el Administrador de tareas pero con aproximadamente 10 veces la funcionalidad.
Los Sysinternals también tienen
handle.exe
una herramienta de línea de comando que le dice qué archivos ha abierto un proceso.fuente
Echa un vistazo a Process Explorer de Sysinternals.
Para ver los archivos abiertos para un proceso, seleccione un proceso de la lista, seleccione la opción de menú Ver-> Vista del panel inferior-> Controladores. Todos los identificadores de tipo "Archivo" son los archivos abiertos.
Además, una excelente manera de encontrar qué aplicación tiene un archivo abierto es mediante la opción de menú Buscar-> Manija o DLL. Simplemente ingrese el nombre del archivo que está buscando y presione "Buscar" para encontrar los procesos con un archivo abierto que coincida con la cadena de búsqueda.
fuente
Process Explorer de Sysinternals es bastante inútil cuando se trata de manejar identificadores de archivos (a diferencia de los DLL, etc.). Utilice el Monitor de recursos de Windows, haga clic en la pestaña CPU. Junto a Manijas asociadas, escriba el nombre del archivo y verá quién lo tiene abierto.
fuente
Como Dave dijo correctamente, use Process Explorer de SysInternals, aparte de eso, ofrecen un conjunto variable de utilidades. Pago: http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx
fuente