我想在 Microsoft Windows 上编写一个 C++ 函数,它生成一个进程并返回,除了进程的终止状态,进程读取或写入的所有文件的列表。它不应该需要衍生应用程序的任何合作。
例如,如果生成的程序是 Visual Studio C++ 编译器,则该函数将生成一个列表,其中包含编译器打开的源文件、它读取的所有头文件以及.OBJ
它创建的文件。如果它还包含.DLL
程序包含的文件之类的东西,那就没问题了。但同样,无论生成的程序如何,它都应该工作;编译器只是一个例子。
一个转折:如果进程创建子进程,我还需要监视它们的文件访问。
第二个转折点:如果进程试图打开一个文件,我希望能够让它等到我可以创建那个文件——然后才让它恢复并打开文件。(我认为这排除了 ETW。)
我知道这可能听起来像是一些可怕的杂物的成分。但如果我能做到这一点,最终的结果会非常酷。