首页 > 后端开发 > C++ > 如何检索 .NET 中进程的执行历史记录?

如何检索 .NET 中进程的执行历史记录?

Barbara Streisand
发布: 2025-01-21 00:36:15
原创
318 人浏览过

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

使用 .NET 监控进程执行历史

需要跟踪特定进程上次在系统上运行的时间? 虽然 Process.GetProcessesByName 显示当前正在运行的进程,但它不提供历史数据。 本文演示了使用 Windows Management Instrumentation (WMI) 来解决此问题。

利用 WMI 进行进程监控

WMI 通过 Win32_ProcessTrace 类提供对进程启动和停止事件的访问。 以下代码片段说明了如何监视这些事件:

<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>
登录后复制

重要注意事项:

此代码需要管理员权限才能正常运行。 请记住相应地调整应用程序清单。 运行多个进程将允许您观察程序记录的进程启动和停止事件。

以上是如何检索 .NET 中进程的执行历史记录?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板