ホームページ >バックエンド開発 >C++ >.NET でプロセスの実行履歴を取得するにはどうすればよいですか?

.NET でプロセスの実行履歴を取得するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-21 00:36:15318ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。