使用 .NET 擷取終止程序的上次執行時間
標準 .NET Process.GetProcessesByName
方法僅檢索目前正在執行的進程。 為了獲取有關終止進程的信息,Windows Management Instrumentation (WMI) 提供了使用 Win32_ProcessTrace
類別的解決方案。
範例:
此範例示範如何建立一個使用 WMI 監視程序啟動和停止的控制台應用程式。 請記住在您的專案中加入對 System.Management
的引用。
<code class="language-csharp">using System; using System.Management; public class ProcessMonitor { public static void Main(string[] args) { // Establish event watchers for process start and stop events. using (ManagementEventWatcher startWatch = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace"))) { startWatch.EventArrived += StartWatch_EventArrived; startWatch.Start(); using (ManagementEventWatcher stopWatch = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStopTrace"))) { stopWatch.EventArrived += StopWatch_EventArrived; stopWatch.Start(); // Await user input to end monitoring. Console.WriteLine("Press any key to exit..."); Console.ReadKey(); } } } private static void StopWatch_EventArrived(object sender, EventArrivedEventArgs e) { Console.WriteLine($"Process stopped: {e.NewEvent.Properties["ProcessName"].Value}"); } private static void StartWatch_EventArrived(object sender, EventArrivedEventArgs e) { Console.WriteLine($"Process started: {e.NewEvent.Properties["ProcessName"].Value}"); } }</code>
實作步驟:
重要說明:WMI 在此任務上的效能可能不是最佳的。對於高性能場景,應該探索替代方法。
以上是如何檢索 .NET 中終止進程的上次運行時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!