2013-05-22 3 views
5

In meinem Win7 Task Manager gibt es eine Spalte, die angezeigt werden kann "Command Line" und zeigt genau wie der Prozess gestartet wurde und alle Parameter ausgegeben. Wenn ich ein Process Objekt für einen aktuell laufenden Prozess habe, den ich nicht gestartet habe, wie kann ich diese Informationen bekommen? Ich hatte gehofft, dass ich etwas wie p.StartInfo.Arguments tun könnte, aber das kommt immer als leere Zeichenfolge zurück. Die gesamte StartInfo-Eigenschaft scheint leer zu sein, wahrscheinlich weil ich den Prozess, den ich abfrage, nicht gestartet habe. Ich vermute, dass ich einen WinAPI-Aufruf verwenden muss. NunHolen Sie die "Befehlszeile" und die Argumente von Process von Process object?

Antwort

8

Sie konnte WMI verwenden, gibt es eine Klasse, die queryied werden, um die Prozessliste und jedes Objekt enthält eine Eigenschaft für die Befehlszeile abrufen, die den Prozess

string query = "SELECT Name, CommandLine, ProcessId, Caption, ExecutablePath " + 
       "FROM Win32_Process"; 
string wmiScope = @"\\your_computer_name\root\cimv2"; 
ManagementObjectSearcher searcher = new ManagementObjectSearcher (wmiScope, query); 
foreach (ManagementObject mo in searcher.Get()) 
{ 
    Console.WriteLine("Caption={0} CommandLine={1}", 
      mo["Caption"], mo["CommandLine"]); 
} 
+1

+1 gestartet, siehe auch http : //social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/8efe163b-927e-4895-9983-b8c47b515d7c/ für eine gute Aufschlüsselung dieser Methode. – HerrJoebob

+0

Danke @HerrJoebob, jetzt habe ich herausgefunden, was ich vergessen habe. Der Code könnte mit 'mo [" CommandLine "]' abgekürzt werden – Steve