有没有办法从每个启动的新stream程的窗口获取事件?

每次操作系统启动一个新进程时,我都希望收到通知。
请注意,我需要在本机代码(我知道它可以使用System.Management成员在托pipe代码中完成)。
如果在进程开始运行之前有一种方法可以得到额外的分值:)(例如,在初始化期间)

谢谢。

使用驱动程序的问题是您将需要安装它的权限,否则我认为是最安全的方法。

在用户空间中,您可以尝试创建一个窗口钩子,如果这样的应用程序使用窗口,将会工作,但是否则相当令人讨厌。

另一方面,您可以尝试使用WMI ,这是C#中使用的基础技术。 你可以在这个例子中找到指针。

您无法控制进程创建或从用户空间注册回调。 也许这篇文章可以帮助。 “连接本地API并在全系统基础上控制流程创建”

为了只注册一个回调函数,你可以使用MS DDK中提供的PsSetCreateProcessNotifyRoutine。 它可以在www.codeproject.com/KB/threads/procmon.aspx中找到它的用法

实时ETW跟踪将以低系统开销为您提供这些信息。 请注意,这不会让你挂钩进程创建(即它只会是一个通知,你不能控制进程是否真正开始)