Maison > développement back-end > C++ > Comment puis-je récupérer l'historique d'exécution des processus dans .NET ?

Comment puis-je récupérer l'historique d'exécution des processus dans .NET ?

Barbara Streisand
Libérer: 2025-01-21 00:36:15
original
318 Les gens l'ont consulté

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

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal