Межплатформенное отслеживание доступа к файлам - PullRequest
3 голосов
/ 21 августа 2008

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

Есть ли кросс-платформенное решение для этого?
Каковы различные методы для конкретных платформ?
В Linux я знаю, что есть strace / ptrace (если есть более быстрые методы, которые тоже подойдут).
Я думаю, на Mac OS есть Ktrace.
А как насчет Windows?

Кроме того, было бы удивительно, если бы была возможность блокировать (блокировать) доступ к файлам до более позднего времени.

Спасибо!

Ответы [ 3 ]

1 голос
/ 22 августа 2008

Короткий ответ - нет. Существует множество платформо-зависимых решений, которые, вероятно, имеют схожие интерфейсы, но они не являются кроссплатформенными по своей природе, поскольку файловые системы обычно зависят от платформы.


Как мне сделать это хорошо на каждой платформе?

Опять же, это будет зависеть от платформы :) В Windows, если вы хотите отслеживать чтение / запись в полете, вам, возможно, придется использовать IFS. Если вы просто хотите получать уведомления об изменениях, вы можете использовать ReadDirectoryChangesW или журнал изменений NTFS.

Я бы рекомендовал использовать журнал изменений NTFS только потому, что он, как правило, более надежен.

0 голосов
/ 14 января 2010

Пока ваша программа запускает процессы, которые вы хотите отслеживать, вы можете написать отладчик, а затем вы будете получать уведомления каждый раз, когда процесс запускается или завершается. Когда процесс запускается, вы можете внедрить DLL для перехвата системных вызовов CreateFile для каждого отдельного процесса. Затем ловушка может использовать канал или сокет для сообщения об активности файла отладчику.

0 голосов
/ 22 августа 2008

В Windows вы можете использовать инструмент командной строки Обрабатывать или версию GUI Обозреватель процессов , чтобы увидеть, какие файлы открыты данным процессом.

Если вы ищете эту информацию в своей собственной программе, вы можете использовать IFS kit от Microsoft, чтобы написать фильтр файловой системы. Фильтр файловой системы покажет все операции файловой системы для всего процесса. Фильтры файловой системы используются в программном обеспечении AV для сканирования файлов перед их открытием или для сканирования вновь созданных файлов.

...