有没有办法在每个启动的新进程上从Windows获取事件?

时间:2010-03-02 14:44:17

标签: c++ windows winapi process native

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

感谢。

3 个答案:

答案 0 :(得分:2)

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

在用户空间中,您可以尝试创建一个窗口挂钩,如果此类应用程序使用窗口,它将起作用,但在其他方面非常令人讨厌。

另一方面,您可以尝试使用WMI,这是C#中使用的基础技术。您可以在this anwers和examples中查找指针。

答案 1 :(得分:0)

您无法控制进程创建或从用户空间注册回调。也许这篇文章可以帮助你。 "Hooking the native API and controlling process creation on a system-wide basis"

要注册回调,您可以使用MS DDK中提供的PsSetCreateProcessNotifyRoutine。其示例用法可以在www.codeproject.com/KB/threads/procmon.aspx

中找到

答案 2 :(得分:0)

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