Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Процесс, который модифицировал файл


Автор: UserOK 16.6.2017, 10:44
Здравствуйте.

Сегодня появился такой вопрос: как найти процесс, который изменил содержимое файла. Допустим, есть файл C:\file.txt. То, что он изменился, нетрудно понять по FileLen, но необходимо выяснить, что именно (какой запущенный процесс) поменял его содержимое. Просьба привести наглядный пример.

Заранее спасибо.

Автор: Akina 16.6.2017, 12:37
Включите файловый аудит на изменение - только тогда получите эти данные.

Автор: UserOK 16.6.2017, 14:43
Цитата(Akina @ 16.6.2017,  12:37)
Включите файловый аудит на изменение - только тогда получите эти данные.

Хорошо, давайте уточню вопрос. Как на Vb6 узнать, какой процесс в настоящее время получает доступ к файлу (конкретно - записывает данные)? Т. е. действие аналогично Unlocker'у - проверить, каким сторонним процессом занят файл (какое приложение использует файл)

Автор: Akina 16.6.2017, 15:21
Способ есть, но я его знаю только описательно. Есть некая недокументированная функция в ntdll.dll, которая позволяет получить доступ к таблице всех хэндлов системы. Из неё можно отобрать хэндлы интересующего тебя файла и получить пиды процессов, по которым узнать их имена. Исходного кода на VB - не видел. Можешь попробовать найти что-то на С++ на форумах программистов-системщиков.
Поскольку функция (и используемые ей структуры) была чисто "для внутреннего употребления", то точно могу сказать, что она поддержана в хрюшке и НЕ поддержана в восьмёрке - там придётся искать, что с ней сделали и чем заменили. Насчёт семёрки не знаю.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)