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
Barbara StreisandOriginal
2025-01-21 00:26:08261Durchsuche

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:

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

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!

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