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

Существует ли способ определить, когда в прошлый раз определенная машина в последний раз выполнила процесс?

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

Process[] process = Process.GetProcessesByName(processName, serverName);
32
задан Hans Passant 8 December 2013 в 23:32
поделиться

2 ответа

WMI предоставляет возможность отслеживать процессы, начинающиеся и завершающиеся с помощью классов Win32_ProcessTrace. Лучше всего показать на примере. Запустите новое приложение Console, 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);
  }
}

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

.
65
ответ дан 27 November 2019 в 20:21
поделиться

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

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

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

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

.
6
ответ дан 27 November 2019 в 20:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: