Подтвердить что ты не робот

Монитор процессов .NET

Есть ли способ определить, когда последний раз последний конкретный компьютер запускал процесс?

Я могу использовать следующее, чтобы определить, выполняется ли процесс, но приложение не может захватить процесс, если он с тех пор остановился.

Process[] process = Process.GetProcessesByName(processName, serverName);
4b9b3361

Ответ 1

WMI обеспечивает способ отслеживания процессов, начинающихся и заканчивающихся с помощью классов Win32_ProcessTrace. Лучше всего показано на примере. Запустите новое консольное приложение, Project + Add Reference, выберите System.Management. Вставьте этот код:

using System;
using System.Management;

class Process {
  public static void Main() {
    ManagementEventWatcher startWatch = new ManagementEventWatcher(
      new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace"));
    startWatch.EventArrived += new EventArrivedEventHandler(startWatch_EventArrived);
    startWatch.Start();
    ManagementEventWatcher stopWatch = new ManagementEventWatcher(
      new WqlEventQuery("SELECT * FROM Win32_ProcessStopTrace"));
    stopWatch.EventArrived += new EventArrivedEventHandler(stopWatch_EventArrived);
    stopWatch.Start();
    Console.WriteLine("Press any key to exit");
    while (!Console.KeyAvailable) System.Threading.Thread.Sleep(50);
    startWatch.Stop();
    stopWatch.Stop();
  }

  static void stopWatch_EventArrived(object sender, EventArrivedEventArgs e) {
    Console.WriteLine("Process stopped: {0}", e.NewEvent.Properties["ProcessName"].Value);
  }

  static void startWatch_EventArrived(object sender, EventArrivedEventArgs e) {
    Console.WriteLine("Process started: {0}", e.NewEvent.Properties["ProcessName"].Value);
  }
}

Отредактируйте манифест, чтобы эта программа работала с повышенным уровнем. Затем просто запустите несколько программ, чтобы увидеть их на работе. Помните, что это не особенно быстро.

Ответ 2

Вы не сможете сделать это, используя класс Process. Тем не менее, должно быть возможно выяснить, когда приложение в последний раз выполнялось путем настройки отслеживания процессов аудита в Windows. Следующие ссылки могут помочь вам:

Отслеживание процессов аудита

Как я могу отслеживать, какие программы поступают на мою машину?

Отслеживание процесса будет создавать записи в журнале событий Windows, доступ к которым вы можете получить с помощью С#.