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

.NETで終了したプロセスの最終実行時間を取得するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-21 00:46:09244ブラウズ

How to Retrieve the Last Run Time of a Terminated Process in .NET?

.NET を使用して終了したプロセスの最終実行時刻を取得する

標準の .NET Process.GetProcessesByName メソッドは、現在実行中のプロセスのみを取得します。 終了したプロセスに関する情報を取得するために、Windows Management Instrumentation (WMI) は Win32_ProcessTrace クラスを使用したソリューションを提供します。

例:

この例では、WMI を使用してプロセスの開始と停止を監視するコンソール アプリケーションを作成する方法を示します。 プロジェクトに System.Management への参照を忘れずに追加してください。

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

public class ProcessMonitor
{
    public static void Main(string[] args)
    {
        // Establish event watchers for process start and stop events.
        using (ManagementEventWatcher startWatch = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace")))
        {
            startWatch.EventArrived += StartWatch_EventArrived;
            startWatch.Start();

            using (ManagementEventWatcher stopWatch = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStopTrace")))
            {
                stopWatch.EventArrived += StopWatch_EventArrived;
                stopWatch.Start();

                // Await user input to end monitoring.
                Console.WriteLine("Press any key to exit...");
                Console.ReadKey();
            }
        }
    }

    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>

実装手順:

  1. 権限: アプリケーションに十分な権限 (昇格された特権) があることを確認してください。
  2. 実行: アプリケーションを実行します。
  3. 観察: コンソール出力を監視して、プロセスの開始イベントと停止イベントを確認します。

重要な注意事項: このタスクに対する WMI のパフォーマンスは最適ではない可能性があります。高パフォーマンスのシナリオの場合は、代替方法を検討する必要があります。

以上が.NETで終了したプロセスの最終実行時間を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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