Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menjejaki Proses Mula dan Hentikan Acara Menggunakan .NET dan WMI?

Bagaimanakah Saya Boleh Menjejaki Proses Mula dan Hentikan Acara Menggunakan .NET dan WMI?

Barbara Streisand
Barbara Streisandasal
2025-01-21 00:26:08261semak imbas

How Can I Track Process Start and Stop Events Using .NET and WMI?

Aktiviti Proses Pemantauan dengan .NET dan WMI

.NET menawarkan kaedah yang berkuasa untuk menjejak peristiwa kitaran hayat proses menggunakan Instrumen Pengurusan Windows (WMI). Pendekatan ini amat berguna untuk menentukan masa pelaksanaan terakhir bagi proses tertentu.

Dengan menggunakan kelas Win32_ProcessTrace, anda boleh memantau proses bermula dan berhenti dengan berkesan. Kod berikut menunjukkan cara untuk mencapai ini:

<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>

Ingat: Aplikasi ini memerlukan keistimewaan yang tinggi. Ubah suai manifes permohonan dengan sewajarnya. Kod ini menyediakan penyelesaian yang mantap untuk menjejak peristiwa mula dan berhenti proses, membolehkan pengenalpastian tepat masa pelaksanaan terakhir untuk mana-mana proses tertentu.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjejaki Proses Mula dan Hentikan Acara Menggunakan .NET dan WMI?. 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