Które pliki są otwierane przez określoną aplikację?

21

Czy istnieje sposób na wyświetlenie listy wszystkich plików, które są aktualnie otwierane przez określony proces w systemie Windows?

Mam na myśli pliki, które otrzymały fopen, ale nigdy nie otrzymały fcloseokreślonego procesu.

Próbowałem użyć Sysinternals Process Monitor, ale nie mogłem wymyślić, jak wyświetlić listę aktualnie otwartych plików - ale tylko wtedy, gdy nastąpi otwarcie.

Zacisk
źródło
Powiązane pytanie (z odpowiednimi odpowiedziami na to pytanie): stackoverflow.com/questions/15708/lsof-equivalent-for-windows
Anderson Green

Odpowiedzi:

17

Możesz wypróbować Sysinternals Process Explorer zamiast Process Monitor. Process Monitor jest przeznaczony do obserwowania, co procesy robią wtedy, gdy robią. Process Explorer służy bardziej do sprawdzania aktualnego stanu procesów; to Menedżer zadań, ale z około 10-krotną funkcjonalnością.

Sysinternals ma również handle.exenarzędzie wiersza polecenia, które informuje, które pliki otworzył proces.

Dave Webb
źródło
29

Sprawdź Process Explorer w Sysinternals.

Aby zobaczyć otwarte pliki dla procesu, wybierz proces z listy, wybierz opcję Widok -> Widok dolnego panelu -> Uchwyty. Wszystkie uchwyty typu „Plik” są otwartymi plikami.

Świetnym sposobem na sprawdzenie, która aplikacja ma otwarty plik, jest skorzystanie z opcji menu Znajdź-> Uchwyt lub DLL. Wystarczy wpisać nazwę szukanego pliku i nacisnąć „Wyszukaj”, aby znaleźć procesy z otwartym plikiem pasującym do wyszukiwanego ciągu.

ciężki
źródło
4
+1 za wszystko z Sysinternals ... btw, bezpośredni link: live.sysinternals.com/procexp.exe
fretje 29.09.2009
+1 za rozwiązanie jego problemu za pomocą narzędzi, których używa. IMO powinna być poprawną odpowiedzią. Nie ma potrzeby korzystania z pliku handle.exe, jeśli już używasz i znasz Eksploratora procesów.
BoldAsLove
5

Process Explorer firmy Sysinternals jest właściwie całkiem bezużyteczny, jeśli chodzi o obsługę uchwytów plików (w przeciwieństwie do bibliotek DLL itp.). Użyj Monitora zasobów Windows, kliknij kartę Procesor. Obok Powiązanych uchwytów wpisz nazwę pliku, a zobaczysz, kto go otworzył.

Will Nitschke
źródło
przeczytaj @ ciężką odpowiedź, nie jest bezużyteczna. Druga część jest wciąż poprawnym rozwiązaniem.
BoldAsLove