.NET 提供了一种使用 Windows Management Instrumentation (WMI) 跟踪进程生命周期事件的强大方法。 这种方法对于确定特定进程的最后执行时间特别有用。
通过使用Win32_ProcessTrace
类,您可以有效地监控进程的启动和停止。 以下代码演示了如何实现此目的:
<code class="language-csharp">using System; using System.Management; public class ProcessTracker { public static void Main() { // Initialize event watchers for process start and stop events. ManagementEventWatcher startWatcher = new ManagementEventWatcher( new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace")); startWatcher.EventArrived += startWatcher_EventArrived; startWatcher.Start(); ManagementEventWatcher stopWatcher = new ManagementEventWatcher( new WqlEventQuery("SELECT * FROM Win32_ProcessStopTrace")); stopWatcher.EventArrived += stopWatcher_EventArrived; stopWatcher.Start(); // Await user input to terminate the application. Console.WriteLine("Press any key to exit."); while (!Console.KeyAvailable) System.Threading.Thread.Sleep(50); // Stop event watchers upon application closure. startWatcher.Stop(); stopWatcher.Stop(); } private static void stopWatcher_EventArrived(object sender, EventArrivedEventArgs e) { // Process stop event handler; logs the process name. Console.WriteLine("Process stopped: {0}", e.NewEvent.Properties["ProcessName"].Value); } private static void startWatcher_EventArrived(object sender, EventArrivedEventArgs e) { // Process start event handler; logs the process name. Console.WriteLine("Process started: {0}", e.NewEvent.Properties["ProcessName"].Value); } }</code>
请记住:此应用程序需要提升权限。 相应地修改应用程序清单。此代码提供了一个强大的解决方案来跟踪进程启动和停止事件,从而能够精确识别任何给定进程的最后执行时间。
以上是如何使用 .NET 和 WMI 跟踪进程启动和停止事件?的详细内容。更多信息请关注PHP中文网其他相关文章!