Heim > Backend-Entwicklung > C++ > Wie kann ich den Ausführungsverlauf von Prozessen in .NET abrufen?

Wie kann ich den Ausführungsverlauf von Prozessen in .NET abrufen?

Barbara Streisand
Freigeben: 2025-01-21 00:36:15
Original
318 Leute haben es durchsucht

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

Überwachung des Prozessausführungsverlaufs mit .NET

Müssen Sie nachverfolgen, wann bestimmte Prozesse zuletzt auf einem System ausgeführt wurden? Während Process.GetProcessesByName aktuell laufende Prozesse anzeigt, bietet es keine historischen Daten. In diesem Artikel wird die Verwendung von Windows Management Instrumentation (WMI) zur Lösung dieses Problems veranschaulicht.

WMI zur Prozessüberwachung nutzen

WMI bietet Zugriff auf Prozessstart- und -stoppereignisse über die Win32_ProcessTrace-Klassen. Der folgende Codeausschnitt veranschaulicht, wie diese Ereignisse überwacht werden:

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

Wichtige Überlegungen:

Dieser Code erfordert Administratorrechte, um ordnungsgemäß zu funktionieren. Denken Sie daran, das Anwendungsmanifest entsprechend anzupassen. Wenn Sie mehrere Prozesse ausführen, können Sie die vom Programm protokollierten Prozessstart- und -stoppereignisse beobachten.

Das obige ist der detaillierte Inhalt vonWie kann ich den Ausführungsverlauf von Prozessen in .NET abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage