Ich muss in der Lage sein, die Befehlszeilenargumente (falls vorhanden) an andere laufende Prozesse zu übergeben. Ich habe die PIDs der laufenden Prozesse bereits auf dem System, also muss ich im Grunde die Argumente bestimmen, die mit dem gegebenen PID XXX verarbeitet werden.Lesen von Befehlszeilenargumenten eines anderen Prozesses (Win32-C-Code)
Ich arbeite an einem Kernstück von Python module for managing processes. Der Code wird in C als Python-Erweiterung geschrieben und von einer übergeordneten Python-Bibliothek umschlossen. Das Ziel dieses Projekts ist es, die Abhängigkeit von Drittanbieter-Bibliotheken wie den pywin32-Erweiterungen oder hässlichen Hacks wie dem Aufruf von 'ps' oder taskkill in der Befehlszeile zu vermeiden. Daher suche ich nach einer Möglichkeit, dies in C-Code zu tun.
Ich habe diese herum gegoogelt und einige kurze Vorschläge zur Verwendung CreateRemoteThread() gefunden, um mich in den anderen Prozess zu injizieren, dann GetCommandLine() laufen, aber ich hatte gehofft, jemand könnte einige funktionierende Codebeispiele und/oder bessere Vorschläge haben.
UPDATE: Ich habe volle Arbeits Demo-Code gefunden und eine Lösung NtQueryProcessInformation auf Codeproject mit: http://www.codeproject.com/KB/threads/GetNtProcessInfo.aspx - Es ist nicht ideal, da es „nicht unterstützt“ ist die Information direkt aus den NTDLL Strukturen keulen, aber ich werde damit leben . Danke an alle für die Vorschläge.
UPDATE 2: Ich habe durch mehr Googling geschafft, um eine C-Version zu graben, die nicht C++ - Code verwendet, und ist ein wenig direkter/prägnant auf dieses Problem hingewiesen. Einzelheiten finden Sie unter http://wj32.wordpress.com/2009/01/24/howto-get-the-command-line-of-processes/.
Danke!
Ich habe jetzt Code im Modul, der SeDebug-Rechte erhält, wenn möglich, also wenn sie ein Admin-Benutzer sind, sollten wir die erforderlichen Rechte haben, richtig? – Jay