Какие файлы открываются конкретным приложением?

21

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

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

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

зажим
источник
Связанный вопрос (с соответствующими ответами на этот вопрос): stackoverflow.com/questions/15708/lsof-equivalent-for-windows
Anderson Green

Ответы:

17

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

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

Дэйв Уэбб
источник
29

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

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

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

heavyd
источник
4
+1 за что угодно от Sysinternals ... кстати, прямая ссылка: live.sysinternals.com/procexp.exe
fretje
+1 за решение своей проблемы с инструментами, которые он использует. ИМО это должен быть правильный ответ. Нет необходимости использовать handle.exe, когда вы уже используете и знакомы с Process Explorer.
BoldAsLove
5

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

Будет ниччке
источник
прочитайте ответ @heavyd, это не бесполезно. Вторая часть все еще является действительным решением.
BoldAsLove