日期:2014-05-16  浏览次数:20962 次

任务管理器中出现新进程对应的事件是什么?
如题,比如我运行计算器程序,这时任务管理器中会多出一个进程。那么我怎样监听系统中创建了新进程,对应哪个事件?

不要用定时器Timer,这个我知道可以,但轮询的效率不高。
------解决方案--------------------
        static void Main(string[] args)
        {
            ManagementScope scope = new System.Management.ManagementScope(@"\\.\root\CIMV2");
            WqlEventQuery query = new WqlEventQuery(
                "__InstanceCreationEvent",
            new TimeSpan(0, 0, 1),
            "TargetInstance isa \"Win32_Process\"");
            ManagementEventWatcher watcher = new ManagementEventWatcher(scope, query);
            watcher.EventArrived += (s, e) => {
                Console.WriteLine("Process {0} has been created.",
                    ((ManagementBaseObject)e.NewEvent.Properties["TargetInstance"].Value).Properties["Name"].Value.ToString());
            };
            watcher.Start();

            Console.ReadKey();
        }



------解决方案--------------------
百度《安全稳定的进线程监控》
------解决方案--------------------
引用:
Quote: 引用:

这个还真不清楚,不过写驱动是肯定能实现的,用PsSetCreateProcessNotifyRoutine注册一个启动进程的通知,在回调函数里获取进程相关信息,用事件机制通知应用层获取相应内容即可

大师,你说的这个东东应该可以,不过能不能帮我写下代码:当系统创建了新进程,程序就输出该进程的名称。
我献上100分哦,见笑了。


vs2008开发的,XP 32bit下测试没有问题,如果是其他系统,请自己改相应偏移
例子