使用MySQL的ManagementEventWatcher/EventArrivedEventMySQL将导致创建另一个线程,这是我试图避免的。MySQL也知道它的延迟。所以我的问题是:我如何在不使用C#的情况下检测Windows进程的创建/终止?有没有一种方法可以从非托管代码中做到这一点?
s3fp2yjn1#
您可以使用Event Tracing for Windows(ETW)。具体来说,您希望在kernel event tracer中查看Process class的子类。我从来没有在托管代码中使用过这个,但是this blog post (web archive link)看起来很有用。我不知道这是否会在您的进程中创建额外的线程。总而言之,你不需要使用ETW来监控流程事件,你可以使用ETW,但我不知道它是否完全符合你的要求。
cnwbcb6i2#
据我所知,唯一支持的订阅进程创建/销毁事件的方法是通过轮询。我认为你拒绝了轮询的选项,在这种情况下,它要么是轮询,要么是崩溃。
2条答案
按热度按时间s3fp2yjn1#
您可以使用Event Tracing for Windows(ETW)。具体来说,您希望在kernel event tracer中查看Process class的子类。
我从来没有在托管代码中使用过这个,但是this blog post (web archive link)看起来很有用。
我不知道这是否会在您的进程中创建额外的线程。
总而言之,你不需要使用ETW来监控流程事件,你可以使用ETW,但我不知道它是否完全符合你的要求。
cnwbcb6i2#
据我所知,唯一支持的订阅进程创建/销毁事件的方法是通过轮询。我认为你拒绝了轮询的选项,在这种情况下,它要么是轮询,要么是崩溃。