.NET으로 프로세스 실행 내역 모니터링
특정 프로세스가 시스템에서 마지막으로 실행된 시기를 추적해야 합니까? Process.GetProcessesByName
에는 현재 실행 중인 프로세스가 표시되지만 기록 데이터는 제공되지 않습니다. 이 문서에서는 WMI(Windows Management Instrumentation)를 사용하여 이 문제를 해결하는 방법을 보여줍니다.
프로세스 모니터링을 위한 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!