Seite 1 von 1

Prozess gestartet von...

Verfasst: 27.03.2008 10:37
von Jilocasin
Hi :)
Hab mal wieder ein kleines Problem.. ich würde gern herausfinden, bei Eingabe einer Prozess-ID, von welchem Prozess (ID, oder Filename.. mir egal) dieser gestartet wurde. Es scheint ja irgendwo abgelegt zu sein, da so Kram wie Security TaskMan dies auch auslesen können.

Hoffe auf Hilfe.. :D

Re: Prozess gestartet von...

Verfasst: 27.03.2008 15:04
von Thorium
Jilocasin hat geschrieben:Hi :)
Hab mal wieder ein kleines Problem.. ich würde gern herausfinden, bei Eingabe einer Prozess-ID, von welchem Prozess (ID, oder Filename.. mir egal) dieser gestartet wurde. Es scheint ja irgendwo abgelegt zu sein, da so Kram wie Security TaskMan dies auch auslesen können.

Hoffe auf Hilfe.. :D
Das ist die Parent PID, die du suchst.
Schau dir mal den Source an: http://www.purebasic.fr/german/viewtopic.php?t=12401
Da wird die durch enumerieren der Prozesse ermittelt.

Verfasst: 27.03.2008 17:24
von Jilocasin
Okay, danke vielmals <)

Wäre es auch noch möglich die Startparameter zu ermitteln?

Das ParentPID hab ich jetzt mal so umgebastelt:

Code: Alles auswählen

Procedure GetProcessParentID(PID)
  ProcessEntry.PROCESSENTRY32

  ProcessEntry\dwSize = SizeOf(ProcessEntry)

  ProcessSnapHandle.l = CreateToolhelp32Snapshot_(#TH32CS_SNAPPROCESS,0)
  RetVal.l = Process32First_(ProcessSnapHandle, ProcessEntry)
    
  While RetVal
    If ProcessEntry\th32ProcessID = PID
      CloseHandle_(ProcessSnapHandle)
      ProcedureReturn ProcessEntry\th32ParentProcessID
    EndIf
    
    RetVal = Process32Next_(ProcessSnapHandle, ProcessEntry)
  Wend
  
  CloseHandle_(ProcessSnapHandle)
  
  ProcedureReturn 0
EndProcedure

Verfasst: 27.03.2008 17:41
von Thorium
Jilocasin hat geschrieben: Wäre es auch noch möglich die Startparameter zu ermitteln?
Hm, schwierig. Soweit ich weis kann man nur die Startparameter des eigenen Prozesses ermitteln. Das heisst man müsste Code in den Parent Prozess injizieren, der dort die Startparameter ermittelt und dann an den Child Prozess übermittelt. Vieleicht gibts aber auch eine einfachere Möglichkeit.