Von nem anderen Prozess-Befehlszeile in Windows

Ich versuche einen anderen Prozess Kommandozeile (unter WinXP 32bit).
Ich Tue das folgende:

  hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ | PROCESS_TERMINATE, FALSE, ProcList.proc_id_as_numbers[i]);

  BytesNeeded = sizeof(PROCESS_BASIC_INFORMATION);
  ZwQueryInformationProcess(hProcess, ProcessBasicInformation, UserPool, sizeof(PROCESS_BASIC_INFORMATION), &BytesNeeded);
  pbi = (PPROCESS_BASIC_INFORMATION)UserPool;

  BytesNeeded = sizeof(PEB);
  res = ZwReadVirtualMemory(hProcess, pbi->PebBaseAddress, UserPool, sizeof(PEB), &BytesNeeded);
  /* zero value returned */
  peb = (PPEB)UserPool;

  BytesNeeded = sizeof(RTL_USER_PROCESS_PARAMETERS);
  res = ZwReadVirtualMemory(hProcess, peb->ProcessParameters, UserPool, sizeof(RTL_USER_PROCESS_PARAMETERS), &BytesNeeded);
  ProcParam = (PRTL_USER_PROCESS_PARAMETERS)UserPool;

Nach dem ersten Aufruf von pbi.UniqueProcessID korrekt ist.
Aber nach dem Aufruf ZwReadVirtualMemory ich bekomme Befehlszeile für meinen Prozess, nicht angeforderte.

Ich auch ReadProcessMemore & NtQueryInformationProcess, aber das gleiche Ergebnis erhalten.

Kann jemand helfen?

Hier http://forum.sysinternals.com/get-commandline-of-running-processes_topic6510_page1.html gesagt wird, dass dieser code funktioniert. Leider weiß ich nicht haben Zugang zu post in diesem forum, sich der Frage zu stellen.

  • Vielleicht haben Sie 0 für die Prozess-id in die OpenProcess nennen, oder sowas in der Art?
  • Nein. hProcess korrekt ist und pbi die ich bekomme, ist auch richtig.
  • Vielleicht die Befehlszeile Ihres eigenen Prozesses ist die gleiche wie in der Befehlszeile des anderen Prozesses? 🙂
  • Nein. Das ist es nicht. Ich bin versucht zu finden, javaw-Prozess von c++ - Programms.
  • Möchten Sie vielleicht, dies zu Lesen: blogs.msdn.com/b/oldnewthing/archive/2009/11/25/9928372.aspx
InformationsquelleAutor Georg | 2011-06-30
Schreibe einen Kommentar