Показати всі файли, які програма відкрила


0

Я шукаю спосіб визначити всі файли, які відкрив процес у Windows. Це відрізняється від багатьох (вже відповідей) запитань тут, оскільки мені потрібно знати всі файли, які відкрив процес, а не лише ті, які він відкрив, коли я їх шукаю. Таким чином я уникаю відсутніх файлів, які повністю завантажені в пам'ять і потім закриті. Ось деякі речі, які я спробував, які не спрацювали:

  • ProcExp та Handle від SysInternals (обидва лише список поточно відкритих файлів)
  • ProcMon від SysInternals (з фільтрами назви процесу та операціями ReadFile та WriteFile). Цей мене здивував. Чому б це не працювало?

Мій тестовий випадок - це відкриття текстового файлу з флешки з Notepad, тому я не очікував, що ProcExp або Handle працюватимуть (оскільки Notepad читає все в пам'яті, а потім закриває файл). Схоже, ProcMon, як і слід, повинен працювати. Насправді, коли я редагую текстовий файл і зберігаю його, я бачу операцію WriteFile та шлях до мого текстового файлу. Однак, я можу побачити лише операції ReadFile, коли я відкриваю файл C:\Windows\Fonts\StaticCache.dat. Можливо, це просто те, що конфігурація мого фільтра помиляється? Або інший інструмент буде краще працювати для мене?


Ви використовуєте правильні інструменти. "Не тільки ті, які вона відкрила, коли я їх шукаю". Скажіть, що?
Рамхаунд

У Рамхаунді він сказав: "усі файли процесу відкрилися, а не лише ті, які він відкрив, коли я їх шукаю". Спробуйте цитувати більше його вироку. і він сказав: "Блокнот читає все в пам'яті, потім закриває файл" <- І він правильний. Тож він пропонує, що якщо блокнот повинен тримати ручку відкритою, то він би знав.
барлоп

Що робити, якщо в моніторі процесів ви фільтруєте процес процес notepad.exe і шлях, який починається з C: \
barlop

Це все, що стосується файлу, який читає блокнот. Я не впевнений, що передбачає читання, хоча i.imgur.com/wczx43T.png Але що робити, якщо ви просто запустите монітор процесу та фільтруєте ім'я процесу. отримати кожен файл, з яким працює процес
barlop

@barlop Вибачте за мою затримку відповіді. Знімаючи всі фільтри "Операція", просто виробляється багато даних для ледачої людини :) Я думаю, що мені дійсно потрібно прочитати, що саме означає кожна операція, але документації на це, здається, не вистачає ... Це Здається, фільтр QueryDirectory повинен працювати для більшості цілей.
KnightOfNi

Відповіді:


1

Отже, я зрозумів, як це зробити. На жаль, начебто не дуже багато доступних ресурсів щодо використання ProcMon, і мої фільтри насправді працювали проти мене. Ось удар по удару:

  1. Додайте фільтр, щоб включити процес, який потрібно вивчити
  2. У правій частині верхньої панелі (що знаходиться трохи нижче «Файл», «Правка», «Подія» тощо) розташовано п'ять піктограм, чотири з яких слід виділити за замовчуванням. Зніміть виділення всіх, за винятком "Показати активність файлової системи" (комп'ютер із лупою над ним). Тепер ви маєте бачити лише файли, до яких звертається програма, а не звичайні ключі реєстру.
  3. Щоб відфільтрувати непотрібні DLL-файли та конфігурувати файли, до яких зазвичай звертається, з’ясуйте, у якій папці знаходиться більшість з них (часто C: \ Windows) та додайте такий фільтр: 'Path' 'Contains' [your folder] 'Exclude'
  4. В якості альтернативи кроку 3 додайте подібний фільтр, щоб просто виключити dlls: 'Path' 'Contains' '.dll' 'Exclude'

Тепер ви повинні бачити майже виключно файли та папки, які програма відкриває, що не є залежностями.


Я думаю, ви все ще отримуєте багато повторів, як на скріншоті в моєму коментарі, файл blah.txt міг повторюватися багато разів. Я не бачу способу змусити його показати лише один раз, якщо, можливо, експортувати в excel та щось запустити там.
барлоп

Так, я не впевнений, як змусити це піти. І все-таки це краще, ніж усі зайві барахли, які я отримував.
KnightOfNi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.