使用 C# 无需 WMI 即可检测 Windows 进程启动和退出事件

问题描述 投票:0回答:2

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

c# .net windows winapi process
2个回答
3
投票

您可以使用Windows 事件跟踪 (ETW)。具体来说,您想要查看 kernel 事件跟踪器中的 Process 类的子类。

我从未在托管代码中使用过此功能,但是这篇博文(网络存档链接)看起来很有用。

我不知道这是否会在您的进程中创建额外的线程。

总之,您不需要 WMI 来监视进程事件。您可以使用 ETW 代替,但我不知道它是否完全满足您的要求。


2
投票

据我所知,订阅进程创建/销毁事件的唯一受支持的方式是通过 WMI。我认为您拒绝轮询选项,在这种情况下,要么是 WMI,要么是失败。

© www.soinside.com 2019 - 2024. All rights reserved.