¿Qué archivos abre una aplicación específica?

21

¿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 fclosepor 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.

abrazadera
fuente
Pregunta relacionada (con respuestas relevantes a esta pregunta): stackoverflow.com/questions/15708/lsof-equivalent-for-windows
Anderson Green

Respuestas:

17

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.exeuna herramienta de línea de comando que le dice qué archivos ha abierto un proceso.

Dave Webb
fuente
29

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.

pesado
fuente
44
+1 para cualquier cosa de Sysinternals ... por cierto, un enlace directo: live.sysinternals.com/procexp.exe
fretje
+1 por abordar su problema con las herramientas que está usando. OMI, esta debería ser la respuesta correcta. No es necesario usar handle.exe cuando ya está utilizando y está familiarizado con el explorador de procesos.
BoldAsLove
5

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.

Will Nitschke
fuente
lee la respuesta @heavyd, no es inútil. La segunda parte sigue siendo una solución válida.
BoldAsLove