首页 >后端开发 >C++ >如何确定 .NET 中已停止进程的最后执行时间?

如何确定 .NET 中已停止进程的最后执行时间?

Barbara Streisand
Barbara Streisand原创
2025-01-21 00:41:09511浏览

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

跟踪终止的 .NET 进程的上次运行时间

.NET Process 类提供对当前活动进程的深入了解。 但是,当尝试确定已结束的进程的最后执行时间时,它会出现不足。

WMI:解决方案

使用 Windows Management Instrumentation (WMI) 可以有效解决这一挑战。 WMI 允许监视进程启动和停止事件。 这是一个实际的实现:

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

必需:提升权限

为了有效监控进程事件,此应用程序需要提升权限。 相应地调整应用程序清单。

使用方法

运行程序。它将持续监控进程的启动和停止,每次都显示进程名称。 按任意键结束监控。

以上是如何确定 .NET 中已停止进程的最后执行时间?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn