我希望能够以编程方式(C#)检测程序何时尝试从我在 Windows 上控制/拥有的目录加载(或以其他方式访问)不存在的 DLL。
我可以使用 Sysinternals Process Monitor (ProcMon) 手动完成此操作。例如,使用下面显示的过滤器,我能够检测到ClientPrj.exe程序尝试从我控制的目录 (C:\MyDirectory) 加载 dll (GetEvenOdd.dll);
我如何以编程方式完成类似的事情?
到目前为止,我的尝试涉及在文件夹上手动启用 Windows 审核、运行程序,然后检查 Windows 事件日志中的任何审核条目,但与此文件夹相关的事件日志中没有出现新条目。
请注意,我并不是要完全复制 procmon,我只是想检测何时尝试从我控制的目录加载文件(在本例中为 DLL)。
边注; 我不清楚为什么 ProcMon 将加载 DLL 的尝试列为“CreateFile”操作,因为“ClientPrj.exe”程序只是试图加载 DLL(在 C++ 中,“ClientPrj.exe”程序正在使用LoadLibrary加载 DLL 的方法)。