File Watcher - получить имя процесса, который создал файл в Windows? - PullRequest
0 голосов
/ 09 января 2009

Есть ли хороший способ получить имя процесса, который создал файл в Windows?

У меня есть каталог на Windows 2000 Server
C: \ WINNT \ Temp , который заполняется файлами с именами, такими как:
70618199
21834082

Они всегда имеют размер 121 210 КБ.

Программно я могу "захватить" имя программы или имя службы, которая отбрасывает файлы в этом месте?

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:
Я провел еще несколько исследований по этому вопросу. Я переименовал файл в TIFF и смог открыть его.
Этот компьютер функционирует как инструмент поиска документов через специальное приложение ASP.NET. Аппарат содержит около 50 000 документов TIFF на диске E: \. На этом компьютере также работает SQL Server 2000 с включенной полнотекстовой индексацией. Полнотекстовое индексирование никоим образом не затрагивает TIFF - но не должно, потому что это правильно в SQL? Но FTS требует, чтобы служба индексирования была включена. Странная вещь, эта TIFF кажется самой большой вещью, обслуживаемой веб-сервером. Использует ли IIS или служба индексирования C: \ WINNT \ Temp для некоторого типа кэширования? Мысли?

РАЗРЕШЕНИЕ (Может быть?) Похоже, это служба индексирования Microsoft.
Когда я его закрываю, ни один из этих файлов не создается в WINNT \ Temp.
Кажется, он берет самый большой найденный файл и копирует его в WINNT \ Temp. Это странно Когда вы имеете дело с файлом размером 100 МБ + TIFF, это может привести к нехватке места на диске. Очень раздражает.
Думаю, я просто закрою ветку "Web" моих служб индексирования.

Ответы [ 7 ]

3 голосов
/ 09 января 2009

Всегда есть Монитор процесса , который заменяет FileMon, который сообщает вам, какой процесс обращается к рассматриваемым файлам.

3 голосов
/ 09 января 2009

Если вы хотите что-то похожее на fuser для Windows, вы можете проверить Process Explorer

Это не позволит вам просмотреть файл, но вы сможете увидеть, обращаются ли текущие запущенные процессы к этому временному каталогу и создают схожие временные файлы.

1 голос
/ 09 января 2009

Единственный способ сделать это из .NET программно - это запустить Приложение дескриптора командной строки Sysinternal , передать имя файла и прочитать вывод консоли, чтобы попытаться поймать исходное приложение с открытой ручкой к файлу.

В противном случае утилиты, упомянутые другими, будут в порядке.

1 голос
/ 09 января 2009

Я использовал FileMon.exe, , но работает только на XP.

0 голосов
/ 03 апреля 2009
\RECYCLER\S-1-5-21-1482476501-1644491937-682003330-1013\service.exe

Это вирус утилизации. Он создал скрытую папку под названием «Recycler» во всех разделах диска, и я не смог удалить их из безопасного режима Windows. Norton, AVG Kaspersky не смог обнаружить или удалить его.

Я отключаю восстановление системы, перезагружаю ПК с загрузочного диска, захожу в командную строку и удаляю папку «Recycler» со всех дисков. используя команду rmdir / s c: \ recycler

Это единственное, что у меня работало в Windows XP.

0 голосов
/ 13 января 2009

Вы всегда можете установить этот каталог только для чтения и посмотреть, что выдает. Хотя, если это сервер документов, вы можете этого не делать.

0 голосов
/ 09 января 2009

Просто используйте стандартный Win32 API (NAPI).

См. Adv. Win32 api ng news: //comp.os.ms-windows.programmer.win32 для исходного кода (C)

...