Я хотел бы написать функцию C ++ в Microsoft Windows, которая порождает процесс и возвращает, в дополнение к состоянию завершения процесса, список всех файлов, прочитанных или записанных процессом. Он не должен требовать какого-либо сотрудничества с порожденным приложением.
Например, если порожденная программа является компилятором Visual Studio C ++, функция выдаст список, содержащий исходный файл, открытый компилятором, все прочитанные им заголовочные файлы и созданный файл .OBJ
. Если бы она также содержала такие вещи, как .DLL
файлы, содержащиеся в программе, это было бы хорошо. Но опять же, он должен работать независимо от порожденной программы; компилятор только пример.
Подсказка: если процесс создает подпроцессы, мне нужно также контролировать их доступ к файлам.
Второй поворот: если процесс пытается открыть файл, я хотел бы подождать, пока я смогу создать этот файл - и только затем позволить ему возобновить работу и открыть файл. (Я думаю, что это исключает ETW.)
Я знаю, что это звучит как ингредиент для какого-то ужасного клуджа. Но если я смогу заставить это работать, конечный результат будет действительно крутым.