«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как определить последнее время выполнения остановленного процесса в .NET?

Как определить последнее время выполнения остановленного процесса в .NET?

Опубликовано в 2025-04-22
Просматривать:729

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

отслеживание последнего времени выполнения завершенного процесса .NET

]

. Тем не менее, это не достигает, когда пытается определить последнее время выполнения процесса, который уже закончился. wmi: решение

Эта задача эффективно решается с использованием инструментов управления Windows (WMI). WMI позволяет запустить процесс мониторинга и остановить события. Вот практическая реализация:

]

с использованием системы; Использование System.Management; Public Class Processmonitor { Public Static Void Main (String [] args) { // Смотреть для начала процесса Использование (var startwatch = new ManagementEventWatcher (New WQLeventQuery («SELECT * FROM WIN32_PROCESSTARTTRACE"))))))) { startwatch.eventarived = startwatch_eventarived; startwatch.start (); // следить за остановками процесса Использование (var stopwatch = new ManagementEventWatcher (new wqleventQuery («Выбрать * из win32_processstoptrace")))))))) { Spectwatch.eventarived = spectwatch_eventarived; Spectwatch.start (); Console.WriteLine («Процесс мониторинга. Нажмите любую клавишу для выхода»); Console.readkey (); } startwatch.stop (); } } Private Static void spectwatch_eventarived (отправитель объекта, EventariveVentargs e) { Console.writeline ($ "Процесс остановлен: {e.newevent.properties [" processname "]. Value}"); } private static void startwatch_eventarived (отправитель объектов, EventariveVentargs e) { Console.WriteLine ($ "Зачался процесс: {e.newevent.properties [" processName "]. Value}"); } }
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}");
    }
}
]

для эффективного мониторинга процессов событий, это приложение требует повышенных привилегий. Соответственно настроить манифест приложения.

]

как использовать

]

запустить программу. Он будет постоянно следить за процессом запуска и останавливается, каждый раз отображая имя процесса. Нажмите любую клавишу, чтобы конечно мониторинг.

]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3