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