检测应用程序的启动

如何使用Windows上的C#检测外部应用程序启动的时刻?

我试过FilesystemWatcher,因为这个文件并没有真正改变,所以没有工作。 还有一个计时器不断检查所有打开的进程可能是有点过分杀死。 有没有其他方法可以做到这一点? 如果不是在C#中有可能在C ++中这样做(如果是这样,请给我一个例子)。

我想这样做的原因是为了logging目的。

Solutions Collecting From Web of "检测应用程序的启动"

您可以使用System.Management和WMI(Windows Management Instrumentation)

class WMIEvent { public static void Main() { WMIEvent we = new WMIEvent(); ManagementEventWatcher w= null; WqlEventQuery q; try { q = new WqlEventQuery(); q.EventClassName = "Win32_ProcessStartTrace"; w = new ManagementEventWatcher(q); w.EventArrived += new EventArrivedEventHandler(we.ProcessStartEventArrived); w.Start(); Console.ReadLine(); // block main thread for test purposes } finally { w.Stop(); } } public void ProcessStartEventArrived(object sender, EventArrivedEventArgs e) { foreach(PropertyData pd in e.NewEvent.Properties) { Console.WriteLine("\n============================= ========="); Console.WriteLine("{0},{1},{2}",pd.Name, pd.Type, pd.Value); } }