18

Есть ли способ перечислить все файлы, которые в настоящее время открываются определенным процессом в Windows?

Я имею в виду файлы, которые получили fopen , но никогда не получили fclose по определенному процессу.

Я пытался использовать Sysinternals Process Monitor, но я не мог понять, как составить список текущих открытых файлов - но только когда происходит открытие.

4 ответа4

24

Проверьте Process Explorer от Sysinternals.

Чтобы просмотреть открытые файлы для процесса, выберите процесс из списка, выберите пункт меню Вид-> Вид нижней панели-> Ручки. Все дескрипторы типа "Файл" являются открытыми файлами.

Кроме того, отличный способ узнать, в каком приложении открыт файл, - это использовать пункт меню Find-> Handle или DLL. Просто введите имя файла, который вы ищете, и нажмите "Поиск", чтобы найти процессы с открытым файлом, соответствующим строке поиска.

14

Вы можете попробовать Sysinternals Process Explorer вместо Process Monitor. Process Monitor предназначен для наблюдения за тем, что процессы делают так, как они делают тогда. Process Explorer больше для просмотра текущего состояния процессов; это диспетчер задач, но с функциональностью примерно в 10 раз.

Sysinternals также имеет handle.exe который является средством командной строки, которое сообщает вам, какие файлы открыты в процессе.

4

Process Explorer от Sysinternals на самом деле довольно бесполезен, когда дело доходит до работы с файловыми дескрипторами (в отличие от DLL и т.д.). Используйте Windows Resource Monitor, нажмите на вкладку CPU. Рядом со связанными дескрипторами введите имя файла, и вы увидите, у кого он открыт.

-1

Как правильно сказал Дейв, используйте Process Explorer из SysInternals, кроме того, они предлагают различный набор утилит. Оформить заказ: http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .