有没有一种方法可以确定特定机器最后一次运行进程的时间?.NET进程监视器
我可以使用以下内容来确定进程是否正在运行,但是如果进程已停止,应用程序无法获取进程。
Process[] process = Process.GetProcessesByName(processName, serverName);
有没有一种方法可以确定特定机器最后一次运行进程的时间?.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);
}
}
Edit the manifest所以这个程序运行升高。然后只需启动一些程序即可在工作中看到它。注意它不是特别快。
您将无法使用Process
类来做到这一点。但是,应该可以通过在Windows中配置审计进程跟踪来确定应用程序上次运行的时间。下面的链接可能让你开始:
过程跟踪将创建在Windows事件日志条目,然后您可以访问使用C#。
谢谢。刚刚尝试过,它完美地工作。 – 2010-01-05 20:19:46
它完美的工作,但延迟是烦人的,有反正它让它更快? – 2012-05-13 11:20:30
我刚刚尝试过,延迟时间少于1秒。我认为这是好的。 – webber2k6 2012-11-16 07:29:52