使用 WMI 的 ManagementEventWatcher/EventArrivedEventHandler 将导致创建另一个我试图避免的线程。 WMI 也知道它的延迟。
所以我的问题是:如何在没有 WMI 的情况下使用 C# 检测 Windows 进程的创建/终止?有没有办法从非托管代码做到这一点?
最佳答案
您可以使用 Event Tracing for Windows (ETW)。具体来说,您想查看 Process class 的子类在kernel event tracer .
我从未在托管代码中使用过它,但是 this blog post看起来很有用。
而且我不知道这是否会在您的进程中创建额外的线程。
总而言之,您不需要 WMI 来监视进程事件。您可以改用 ETW,但我不知道它是否完全符合您的要求。
关于c# - 在没有 WMI 的情况下使用 C# 检测 Windows 进程启动和退出事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22131316/