Take the 2-minute tour ×

Using C#, how can I get a list of all running processes on the current machine, including image name, description and process id? I'm after something similar to what you would see under the task manager "Process" tab, though without the resource information.

share|improve this question

1 Answer 1

up vote 4 down vote accepted

You need to use the utilities available in the Diagnostics package to do this. I found this code and it works fine.

This line retrieves the processes exactly. You can extract the properties of each process then.

`Process[] allProcs = Process.GetProcesses();

The complete code is as follows. Customize as necessarily`

using System;
using System.Diagnostics;

public class ListProcs
public static void Main()
  int totMemory = 0;
  Console.WriteLine("Info for all processes:");

  Process[] allProcs = Process.GetProcesses();
  foreach(Process thisProc in allProcs)
     string procName = thisProc.ProcessName;
     DateTime started = thisProc.StartTime;
     int procID = thisProc.Id;
     int memory = thisProc.VirtualMemorySize;
     int priMemory = thisProc.PrivateMemorySize;
     int physMemory = thisProc.WorkingSet;
     totMemory += physMemory;
     int priority = thisProc.BasePriority;
     TimeSpan cpuTime = thisProc.TotalProcessorTime;

     Console.WriteLine("Process: {0}, ID: {1}", procName, procID);
     Console.WriteLine("    started: {0}", started.ToString());
     Console.WriteLine("    CPU time: {0}", cpuTime.ToString());
     Console.WriteLine("    virtual memory: {0}", memory);
     Console.WriteLine("    private memory: {0}", priMemory);
     Console.WriteLine("    physical memory: {0}", physMemory);

  Console.WriteLine("\nTotal physical memory used: {0}", totMemory);

Referencing the Original article.

share|improve this answer

Your Answer


