Memantau Sejarah Pelaksanaan Proses dengan .NET
Perlu menjejaki bila proses tertentu kali terakhir dijalankan pada sistem? Walaupun Process.GetProcessesByName
menunjukkan proses yang sedang berjalan, ia tidak menawarkan data sejarah. Artikel ini menunjukkan penggunaan Instrumen Pengurusan Windows (WMI) untuk menyelesaikan masalah ini.
Memanfaatkan WMI untuk Pemantauan Proses
WMI menyediakan akses untuk memproses acara mula dan berhenti melalui kelas Win32_ProcessTrace
. Coretan kod berikut menggambarkan cara memantau acara ini:
<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>
Pertimbangan Penting:
Kod ini memerlukan keistimewaan pentadbir untuk berfungsi dengan betul. Ingat untuk melaraskan manifes permohonan dengan sewajarnya. Menjalankan berbilang proses akan membolehkan anda memerhati proses bermula dan menghentikan peristiwa yang dilog oleh program.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Sejarah Pelaksanaan Proses dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!