.NET进程监视器

有没有办法确定上次运行特定机器的时间?

我可以使用以下内容来确定进程是否正在运行,但是如果进程已经停止,应用程序将无法获取进程。

Process[] process = Process.GetProcessesByName(processName, serverName); 

WMI提供了一种跟踪用Win32_ProcessTrace类开始和结束的进程的方法。 最好的例子。 启动一个新的控制台应用程序,Project +添加引用,选择System.Management。 贴上这个代码:

 using System; using System.Management; class Process { public static void Main() { ManagementEventWatcher startWatch = new ManagementEventWatcher( new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace")); startWatch.EventArrived += new EventArrivedEventHandler(startWatch_EventArrived); startWatch.Start(); ManagementEventWatcher stopWatch = new ManagementEventWatcher( new WqlEventQuery("SELECT * FROM Win32_ProcessStopTrace")); stopWatch.EventArrived += new EventArrivedEventHandler(stopWatch_EventArrived); stopWatch.Start(); Console.WriteLine("Press any key to exit"); while (!Console.KeyAvailable) System.Threading.Thread.Sleep(50); startWatch.Stop(); stopWatch.Stop(); } static void stopWatch_EventArrived(object sender, EventArrivedEventArgs e) { Console.WriteLine("Process stopped: {0}", e.NewEvent.Properties["ProcessName"].Value); } static void startWatch_EventArrived(object sender, EventArrivedEventArgs e) { Console.WriteLine("Process started: {0}", e.NewEvent.Properties["ProcessName"].Value); } } 

编辑清单,以便此程序运行提升。 然后简单地启动一些程序,在工作中看到它。 注意它不是特别快。

你将无法使用Process类来做到这一点。 但是,应该可以通过在Windows中配置审计进程跟踪来确定应用程序上次运行的时间。 以下链接可能会启动您:

审计进程跟踪

我怎样才能跟踪我的机器上进出的程序?

进程跟踪将在Windows事件日志中创建条目,然后使用C#访问。