Heim >Backend-Entwicklung >C++ >Wie rufe ich die letzte Laufzeit eines beendeten Prozesses in .NET ab?

Wie rufe ich die letzte Laufzeit eines beendeten Prozesses in .NET ab?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-21 00:46:09310Durchsuche

How to Retrieve the Last Run Time of a Terminated Process in .NET?

Abrufen der letzten Ausführungszeit eines beendeten Prozesses mit .NET

Die standardmäßige .NET Process.GetProcessesByName-Methode ruft nur aktuell laufende Prozesse ab. Um Informationen über beendete Prozesse zu erhalten, bietet Windows Management Instrumentation (WMI) eine Lösung unter Verwendung der Win32_ProcessTrace-Klassen.

Anschauliches Beispiel:

Dieses Beispiel zeigt, wie Sie eine Konsolenanwendung erstellen, die das Starten und Stoppen von Prozessen mithilfe von WMI überwacht. Denken Sie daran, in Ihrem Projekt einen Verweis auf System.Management hinzuzufügen.

<code class="language-csharp">using System;
using System.Management;

public class ProcessMonitor
{
    public static void Main(string[] args)
    {
        // Establish event watchers for process start and stop events.
        using (ManagementEventWatcher startWatch = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace")))
        {
            startWatch.EventArrived += StartWatch_EventArrived;
            startWatch.Start();

            using (ManagementEventWatcher stopWatch = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStopTrace")))
            {
                stopWatch.EventArrived += StopWatch_EventArrived;
                stopWatch.Start();

                // Await user input to end monitoring.
                Console.WriteLine("Press any key to exit...");
                Console.ReadKey();
            }
        }
    }

    private static void StopWatch_EventArrived(object sender, EventArrivedEventArgs e)
    {
        Console.WriteLine($"Process stopped: {e.NewEvent.Properties["ProcessName"].Value}");
    }

    private static void StartWatch_EventArrived(object sender, EventArrivedEventArgs e)
    {
        Console.WriteLine($"Process started: {e.NewEvent.Properties["ProcessName"].Value}");
    }
}</code>

Implementierungsschritte:

  1. Berechtigungen: Stellen Sie sicher, dass Ihre Anwendung über ausreichende Berechtigungen (erhöhte Berechtigungen) verfügt.
  2. Ausführung:Führen Sie die Anwendung aus.
  3. Beobachtung:Überwachen Sie die Konsolenausgabe, um Prozessstart- und -stoppereignisse zu sehen.

Wichtiger Hinweis: Die Leistung von WMI für diese Aufgabe ist möglicherweise nicht optimal. Für Hochleistungsszenarien sollten alternative Methoden untersucht werden.

Das obige ist der detaillierte Inhalt vonWie rufe ich die letzte Laufzeit eines beendeten Prozesses in .NET ab?. 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