有没有办法确定特定机器最后一次运行进程的时间?
我可以使用以下方法来确定进程是否正在运行,但如果进程已停止,应用程序将无法获取该进程。
Process[] process = Process.GetProcessesByName(processName, serverName);
最佳答案
WMI 提供了一种使用 Win32_ProcessTrace 类跟踪进程开始和终止的方法。最好用一个例子来展示。启动一个新的控制台应用程序,Project + Add Reference,选择 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);
}
}
Edit the manifest所以这个程序运行提升。然后只需启动一些程序即可看到它的工作情况。请注意它不是特别快。
关于c# - .NET 进程监视器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6525267/