使用 .NET 監控進程執行歷史
需要追蹤特定進程上次在系統上運行的時間? 雖然 Process.GetProcessesByName
顯示目前正在運行的進程,但它不提供歷史資料。 本文示範了使用 Windows Management Instrumentation (WMI) 來解決此問題。
利用 WMI 進行進程監控
WMI 透過 Win32_ProcessTrace
類別提供對進程啟動和停止事件的存取。 以下程式碼片段說明如何監視這些事件:
<code class="language-csharp">using System; using System.Management; public class ProcessMonitor { public static void Main(string[] args) { // Create 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(); // Keep the console open until a key is pressed Console.WriteLine("Press any key to exit..."); Console.ReadKey(); // Stop event watchers startWatcher.Stop(); stopWatcher.Stop(); } private static void StopWatcher_EventArrived(object sender, EventArrivedEventArgs e) { Console.WriteLine($"Process stopped: {e.NewEvent.Properties["ProcessName"].Value}"); } private static void StartWatcher_EventArrived(object sender, EventArrivedEventArgs e) { Console.WriteLine($"Process started: {e.NewEvent.Properties["ProcessName"].Value}"); } }</code>
重要注意事項:
此程式碼需要管理員權限才能正常運作。 請記住要相應地調整應用程式清單。 執行多個進程將允許您觀察程式記錄的進程啟動和停止事件。
以上是如何檢索 .NET 中進程的執行歷史記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!