Surveillance de l'historique d'exécution des processus avec .NET
Besoin de savoir quand des processus spécifiques ont été exécutés pour la dernière fois sur un système ? Bien que Process.GetProcessesByName
affiche les processus en cours d'exécution, il n'offre pas de données historiques. Cet article montre l'utilisation de Windows Management Instrumentation (WMI) pour résoudre ce problème.
Exploiter WMI pour la surveillance des processus
WMI donne accès aux événements de démarrage et d'arrêt des processus via les Win32_ProcessTrace
classes. L'extrait de code suivant illustre comment surveiller ces événements :
<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>
Considérations importantes :
Ce code nécessite des privilèges d'administrateur pour fonctionner correctement. N'oubliez pas d'ajuster le manifeste de l'application en conséquence. L'exécution de plusieurs processus vous permettra d'observer les événements de démarrage et d'arrêt du processus enregistrés par le programme.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!