Показать процессы, которые обращаются к папке - PullRequest
0 голосов
/ 13 апреля 2010

Я пытаюсь написать простую программу, предпочтительно на C, которая будет смотреть данный каталог. Всякий раз, когда процесс обращается к этому каталогу, я просто хочу распечатать имя этого процесса. Это кажется простым, но я не могу найти решения для MSDN. Кто-нибудь знает, какие библиотечные звонки мне понадобятся для этого, или какой-нибудь полезный совет? Я неоднократно рассматривал вопрос о том, какие процессы имеют дескрипторы в данном каталоге, и просто отслеживал добавления в этот список. Этот подход кажется очень интенсивным, и я надеюсь, что есть более простой способ. Спасибо.

Ответы [ 2 ]

2 голосов
/ 14 апреля 2010

Я не уверен, что есть более простой способ, но один из них - использовать драйвер фильтра файловой системы . Или просто драйвер минифильтра для файловой системы .

Вы можете фильтровать, регистрировать, отслеживать, контролировать ... все операции ввода-вывода.

1 голос
/ 13 апреля 2010

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

Если вы можете использовать драйвер, вы можете использовать Event Tracing для Windows эта информация.Это то, что использует Sysinternals ProcMon.Но установка драйвера - это очень инвазивный процесс, ошибки в вашем драйвере вызывают BSOD, а для установки драйвера требуются права администратора.Что-то иметь в виду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...