Heim > Backend-Entwicklung > C++ > Wie kann ich Prozessstart- und -stoppereignisse mithilfe von .NET und WMI verfolgen?

Wie kann ich Prozessstart- und -stoppereignisse mithilfe von .NET und WMI verfolgen?

Barbara Streisand
Freigeben: 2025-01-21 00:26:08
Original
317 Leute haben es durchsucht

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

Überwachen der Prozessaktivität mit .NET und WMI

.NET bietet eine leistungsstarke Methode zum Verfolgen von Prozesslebenszyklusereignissen mithilfe der Windows-Verwaltungsinstrumentation (WMI). Dieser Ansatz ist besonders nützlich, um die letzte Ausführungszeit eines bestimmten Prozesses zu bestimmen.

Durch die Verwendung der Win32_ProcessTrace-Klassen können Sie Prozessstarts und -stopps effektiv überwachen. Der folgende Code zeigt, wie dies erreicht wird:

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);
    }
}
Nach dem Login kopieren

Denken Sie daran: Für diese Anwendung sind erhöhte Berechtigungen erforderlich. Ändern Sie das Anwendungsmanifest entsprechend. Dieser Code bietet eine robuste Lösung zum Verfolgen von Prozessstart- und -stoppereignissen und ermöglicht die genaue Identifizierung des letzten Ausführungszeitpunkts für einen bestimmten Prozess.

Das obige ist der detaillierte Inhalt vonWie kann ich Prozessstart- und -stoppereignisse mithilfe von .NET und WMI verfolgen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage