c# domain - .NET Process Monitor




start visual (3)

C'è un modo per determinare quando è stata eseguita l'ultima volta che un determinato computer ha eseguito un processo?

Posso usare quanto segue per determinare se un processo è in esecuzione, ma l'applicazione non può afferrare il processo se ha smesso da allora.

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

Answers

WMI fornisce un modo per tenere traccia dei processi che iniziano e terminano con le classi Win32_ProcessTrace. Meglio mostrato con un esempio. Avviare una nuova applicazione Console, Progetto + Aggiungi riferimento, selezionare System.Management. Incolla questo codice:

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);
  }
}

Modifica il manifest in modo che questo programma funzioni in modo elevato. Quindi avvia semplicemente alcuni programmi per vederlo al lavoro. Fai attenzione che non è particolarmente veloce.



Abilitare il debug di SQL Server nelle proprietà del progetto.





c# process system