Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mendapatkan Sejarah Pelaksanaan Proses dalam .NET?

Bagaimanakah Saya Boleh Mendapatkan Sejarah Pelaksanaan Proses dalam .NET?

Barbara Streisand
Barbara Streisandasal
2025-01-21 00:36:15366semak imbas

How Can I Retrieve the Execution History of Processes in .NET?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn