.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>
実装手順:
重要な注意事項: このタスクに対する WMI のパフォーマンスは最適ではない可能性があります。高パフォーマンスのシナリオの場合は、代替方法を検討する必要があります。
以上が.NETで終了したプロセスの最終実行時間を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。