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

Обнаружение запуска приложения

Как определить с помощью С# в Windows момент запуска внешнего приложения?

Я попробовал FilesystemWatcher, который не работает, потому что файл не меняется. Кроме того, таймер постоянно проверяет, что все открытые процессы могут быть немного убиты. Есть ли другой способ сделать это? Если нет в С#, возможно ли это сделать на С++ (если да, то дайте мне пример).

Причина, по которой я хочу сделать это, предназначена для ведения журнала.

4b9b3361

Ответ 1

Вы можете использовать System.Management и WMI (инструментарий управления Windows)

class WMIEvent {
    public static void Main() {
        WMIEvent we = new WMIEvent();
        ManagementEventWatcher w= null;
        WqlEventQuery q;
        try {
            q = new WqlEventQuery();
            q.EventClassName = "Win32_ProcessStartTrace";
            w = new ManagementEventWatcher(q);
            w.EventArrived += new EventArrivedEventHandler(we.ProcessStartEventArrived);
            w.Start();
            Console.ReadLine(); // block main thread for test purposes
        }
        finally {
            w.Stop();
        }
 }

    public void ProcessStartEventArrived(object sender, EventArrivedEventArgs e) {    
        foreach(PropertyData pd in e.NewEvent.Properties) {
            Console.WriteLine("\n============================= =========");
            Console.WriteLine("{0},{1},{2}",pd.Name, pd.Type, pd.Value);
        }
  }