2009-03-15 6 views
19

Me gustaría encontrar una forma de recorrer todos los procesos activos y hacer comprobaciones de diagnósticos en ellos (uso de mem, tiempo de CPU, etc.), algo similar al administrador de tareas.¿Cómo puedo enumerar todos los procesos que se ejecutan en Windows?

El problema se divide en dos partes:

  1. la búsqueda de todos los procesos
  2. Encontrar los atributos de diagnóstico acerca de ellos

No estoy seguro incluso en lo espacio de nombres para ir en busca de ella . Cualquier ayuda/sugerencias/enlaces es agradecida.

Respuesta

49

Encontrar todos los procesos

Usted puede hacer esto a través de la clase Process

using System.Diagnostics; 
... 
var allProcceses = Process.GetProcesses(); 

Ejecución de los diagnósticos

Puede darnos alguna información aquí? No está claro lo que quieres hacer.

La clase de proceso proporciona un poco de información, aunque eso podría ayudarlo. Es posible consultar esta clase para

  • Todas las roscas
  • ventana principal de mango
  • Todos los módulos cargados
  • información de diagnóstico acerca Varios Memoria (paginado, virtual, espacio de trabajo, etc ...)
  • Información básica de procesos (id, nombre, la ubicación del disco)

EDITAR

Op mencionaron que desean obtener información sobre la memoria y la CPU. Estas propiedades están disponibles en la clase Process (devuelta por GetProcesses()). A continuación se muestra la página de MSDN que enumera todas las propiedades compatibles. Hay varios módulos de memoria y CPU disponibles que se adaptarán a sus necesidades.

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx

Código:

añadir esta línea a su lista usando: método

using System.Diagnostics; 

Ahora puede obtener una lista de los procesos con los Process.GetProcesses(), como se ve en este ejemplo:

Process[] processlist = Process.GetProcesses(); 

foreach (Process theprocess in processlist) { 
    Console.WriteLine("Process: {0} ID: {1}", theprocess.ProcessName, theprocess.Id); 
} 
0

¿Qué sistema operativo estás usando? ¿De su etiqueta C# tomo que son ventanas?

Si es así, consulte WMI, particularmente la clase Win32_Process.Aquí está la referencia de MSDN: http://msdn.microsoft.com/en-us/library/aa394372(VS.85).aspx

Así como un par de escenarios de uso aquí (como obtener una lista de procesos): http://msdn.microsoft.com/en-us/library/aa394599(VS.85).aspx

+0

Sí, es Windows (Dice en el tema). – Statement

+0

Jaja lo siento, masivo pasar por alto de mi parte! – CapBBeard

4

Encontrar todos los procesos Es en realidad bastante fácil:

using System.Diagnostics; 

      Process[] processes = Process.GetProcesses(); 

      foreach (Process process in processes) 
      { 
       //Get whatever attribute for process 
      } 
3

JaredPar Ya mencioné la clase Process, así que solo agregaré que debe tener en cuenta que la clase toma una instantánea de la información del proceso cuando se crea la instancia. No es una vista en vivo. Para actualizarlo, debe llamar al Refresh() en la instancia.

También tenga en cuenta que el proceso puede cerrarse mientras lo está inspeccionando, así que prepárese para detectar excepciones y manejarlas como corresponda.

Y, por último, si llama al Process.GetProcesses(), también obtendrá los pseudoprocesos "inactivo" y "sistema". IIRC tienen identificadores de procesos específicos para que pueda filtrarlos fácilmente.

+0

Gracias por el gotcha. Me aseguraré de tener esto en cuenta +1 – Statement

0

bien que puede hacer esto en powershell

1.Finding todos los procesos atributos

get-Process 

diagnóstico 2.Finding sobre ellos

get-Process | where-object { $_.Handles -gt 200 } 

El código anterior devolverá todos los procesos con más de 200 identificadores, puede especificar sus atributos de diagnóstico de esta manera fácilmente.

Para obtener más información sobre how to handle processes using powershell see this

0
using System.Diagnostics; 

class Program 
{ 
    static void Main() 
    { 
     Process[] processlist = Process.GetProcesses();`   
    } 
} 

aquí arrray proceso contiene toda la serie de procesos presentes en ella.

+0

mejorar formiato – GAMITG

Cuestiones relacionadas