.net 使用C#检测Windows进程的启动和退出事件,无需重新启动

new9mtju  于 2023-11-20  发布在  .NET
关注(0)|答案(2)|浏览(160)

使用MySQL的ManagementEventWatcher/EventArrivedEventMySQL将导致创建另一个线程,这是我试图避免的。MySQL也知道它的延迟。
所以我的问题是:我如何在不使用C#的情况下检测Windows进程的创建/终止?有没有一种方法可以从非托管代码中做到这一点?

s3fp2yjn

s3fp2yjn1#

您可以使用Event Tracing for Windows(ETW)。具体来说,您希望在kernel event tracer中查看Process class的子类。
我从来没有在托管代码中使用过这个,但是this blog post (web archive link)看起来很有用。
我不知道这是否会在您的进程中创建额外的线程。
总而言之,你不需要使用ETW来监控流程事件,你可以使用ETW,但我不知道它是否完全符合你的要求。

cnwbcb6i

cnwbcb6i2#

据我所知,唯一支持的订阅进程创建/销毁事件的方法是通过轮询。我认为你拒绝了轮询的选项,在这种情况下,它要么是轮询,要么是崩溃。

相关问题