Maison >développement back-end >C++ >Comment puis-je déterminer l'heure de la dernière exécution d'un processus arrêté dans .NET ?

Comment puis-je déterminer l'heure de la dernière exécution d'un processus arrêté dans .NET ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-21 00:41:09511parcourir

How Can I Determine the Last Execution Time of a Stopped Process in .NET?

Recherche de la dernière durée d'exécution d'un processus .NET terminé

La classe .NET Process offre un aperçu des processus actuellement actifs. Cependant, cela ne suffit pas lorsqu'on essaie de déterminer la dernière heure d'exécution d'un processus déjà terminé.

WMI : La solution

Ce défi est résolu efficacement à l’aide de Windows Management Instrumentation (WMI). WMI permet de surveiller les événements de démarrage et d’arrêt du processus. Voici une mise en œuvre pratique :

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

public class ProcessMonitor
{
    public static void Main(string[] args)
    {
        // Watch for process starts
        using (var startWatch = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace")))
        {
            startWatch.EventArrived += StartWatch_EventArrived;
            startWatch.Start();

            // Watch for process stops
            using (var stopWatch = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStopTrace")))
            {
                stopWatch.EventArrived += StopWatch_EventArrived;
                stopWatch.Start();

                Console.WriteLine("Monitoring process activity. Press any key to exit.");
                Console.ReadKey();
            }
            startWatch.Stop();
        }
    }

    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>

Essentiel : autorisations élevées

Pour surveiller efficacement les événements de processus, cette application nécessite des privilèges élevés. Ajustez le manifeste de l'application en conséquence.

Comment utiliser

Exécutez le programme. Il surveillera en permanence les démarrages et les arrêts du processus, affichant le nom du processus à chaque fois. Appuyez sur n'importe quelle touche pour mettre fin à la surveillance.

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!

Déclaration:
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