关于C#:是否可以接收有关Windows中启动的进程的事件?

Is there a way to recieve a event about a process starting in windows?

TL; DR

我用C语言编写了一个程序,以关闭所有"新"启动的程序,这些程序在我的程序启动时未运行。目前,我通过捕获所有PID来执行此操作,然后根据此列表不断检查所有已注册的应用程序。那些不在我名单上的人,我试图关闭/杀死。对于这样一个简单的任务,这非常占用CPU资源。有没有办法接收某种Windows事件,所以我不需要一个非常活跃的线程?

我发现了这个钩子,它也许可以满足我的需要,但似乎是为其他目的而设计的,并非完全符合我的需要。

简而言之:

在进程启动之后/之前,我是否可以从Windows接收事件?


理想情况下,您可以在用户模式下执行此操作,而无需轮询,而我能想到的唯一接近的是WMI事件。

一个C例子可以在这里找到。您可能还想阅读__InstanceCreationEvent和Win32_ProcessStartTrace之间的区别。