c# - 在没有 WMI 的情况下使用 C# 检测 Windows 进程启动和退出事件

标签 c# .net windows winapi process

使用 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/

相关文章:

c# - 判断当前时间是否在多个时间跨度之间

.net - 休眠环境 : auditing an entity already in production

c++ - 为 C++ 设置窗口

c# - 如何限制对其他公共(public)接口(interface)实现的内部接口(interface)的访问

c# Excel 跳过第一行?

c# - 定期读取从 Http PostAsync 返回的 Task<Stream> 响应内容

c# - 在 c# .net 中将 posix 样式时区转换为 timezoneinfo

java - 如何使用 Java RMI 从 Windows 服务控制桌面窗口?

android - 使用批处理将文件从Windows复制到Android

c# - WCF CultureInfo 类型化 DataMember 序列化 CommunicationException