wake-up-neo.com

Wie kann ich alle Prozesse auflisten, die unter Windows ausgeführt werden?

Ich möchte einen Weg finden, um alle aktiven Prozesse zu durchlaufen und Diagnoseprüfungen (Mem-Nutzung, CPU-Zeit usw.) durchzuführen, ähnlich wie beim Task-Manager.

Das Problem ist in zwei Teile gegliedert:

  1. Alle Prozesse finden
  2. Diagnoseattribute über sie finden

Ich bin mir nicht mal sicher, in welchem ​​Namespace ich danach suchen soll. Jede Hilfe/Tipps/Links ist dankbar.

23
Statement

Alle Prozesse finden

Sie können dies über die Process-Klasse tun

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

Diagnose ausführen

Können Sie uns hier weitere Informationen geben? Es ist nicht klar, was Sie tun möchten.

Die Process-Klasse enthält jedoch einige Informationen, die Ihnen helfen können. Es ist möglich, diese Klasse abzufragen 

  • Alle Themen
  • Hauptfenstergriff
  • Alle geladenen Module
  • Verschiedene Diagnoseinformationen zum Speicher (Paged, Virtual, Working Set usw.)
  • Grundlegende Prozessinformationen (ID, Name, Speicherort der Festplatte)

EDIT

OP erwähnt, dass sie Speicher- und CPU-Informationen erhalten möchten. Diese Eigenschaften sind für die Process-Klasse (verfügbar von GetProcesses ()) leicht verfügbar. Unten ist die MSDN-Seite, auf der alle unterstützten Eigenschaften aufgeführt sind. Es stehen verschiedene Speicher- und CPU-Speicher zur Verfügung, die Ihren Bedürfnissen entsprechen.

http://msdn.Microsoft.com/de-de/library/system.diagnostics.process.aspx

Code:

Fügen Sie diese Zeile Ihrer Verwendungsliste hinzu:

using System.Diagnostics;

Jetzt können Sie mit der Process.GetProcesses () - Methode eine Liste der Prozesse abrufen, wie in diesem Beispiel dargestellt:

Process[] processlist = Process.GetProcesses();

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

Alle Prozesse zu finden ist eigentlich ganz einfach:

using System.Diagnostics;

Process[] processes = Process.GetProcesses();

foreach (Process process in processes)
{
    // Get whatever attribute for process.
}
5
Mez

JaredPar hat bereits auf die Process-Klasse hingewiesen, ich möchte also hinzufügen, dass Sie wissen sollten, dass die Klasse beim Erstellen der Instanz eine Momentaufnahme der Prozessinformationen erstellt. Es ist keine Live-Ansicht. Um es zu aktualisieren, müssen Sie Refresh() in der Instanz aufrufen. 

Denken Sie auch daran, dass der Prozess während der Prüfung geschlossen werden kann. Seien Sie daher darauf vorbereitet, Ausnahmen zu erkennen und entsprechend zu behandeln.

Wenn Sie Process.GetProcesses() aufrufen, erhalten Sie schließlich auch die Pseudo-Prozesse "Idle" und "System". IIRC haben spezifische Prozess-IDs, so dass Sie sie leicht herausfiltern können. 

4
Brian Rasmussen
using System.Diagnostics;

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

hier enthält das Prozessarray die gesamte Anzahl der vorhandenen Prozesse.

0
Mahesh K Naik

Nun, das kannst du in Powershell machen

1. Alle Prozesse finden

get-Process 

2. Diagnose-Attribute zu ihnen finden

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

Der obige Code gibt alle Prozesse mit über 200 Handles zurück. Sie können auf diese Weise Ihre Diagnoseattribute einfach angeben.

Weitere Informationen zu wie man Prozesse mit Powershell abwickelt, erfahren Sie hier

0
Binoj Antony

So greife ich lieber auf die Prozesse zu:

static void Main(string[] args)
{
    Process.GetProcesses().ToList().ForEach(p =>
    {
        Console.WriteLine(
            p.ProcessName + " p.Threads.Count=" + p.Threads.Count + " Id=" + p.Id);
    });

    Console.ReadKey();
}
0
RollRoll

Welches Betriebssystem verwenden Sie? Ich nehme es von Ihrem C # -Tag, dass es Fenster ist?

Wenn ja, überprüfen Sie WMI, insbesondere die Klasse Win32_Process. Hier die MSDN-Referenz: http://msdn.Microsoft.com/de-de/library/aa394372(VS.85).aspx

Neben ein paar Anwendungsszenarien (z. B. das Abrufen einer Liste von Prozessen): http://msdn.Microsoft.com/en-us/library/aa394599(VS.85).aspx

0
CapBBeard