Es gibt eine Sache namens PPID (Parent Process ID), aber es ist relativ "schwierig", sie in Windows zu finden, da es sich nicht um eine im Task-Manager angezeigte Spalte handelt und ich sie auch nicht einmal für Spalten im Process Explorer sehe.
Zwei Methoden, um dies zu tun
Method 1 - WMIC
Method 2 - Process Monitor
Beides sind ziemlich schnelle Methoden
Methode 1 - WMIC
Ich werde eine Antwort darauf verwenden, wie die PPID mithilfe von WMIC von hier aus gefunden wird:
/programming/7486717/finding-parent-process-id-on-windows
Und das macht den Rest ziemlich einfach
C:\blah>wmic process get processid,parentprocessid
ParentProcessId ProcessId
0 0
0 4
4 320
392 572
320 656
648 664
392 688
688 740
688 756
688 764
... ...
Der Rest ist ziemlich offensichtlich.
Nehmen wir also an, Sie möchten herausfinden, wer calc.exe gestartet hat
und calc.exe, die Sie vom Task-Manager sehen, ist PID 7384
C:\blah>wmic process get processid,parentprocessid | find "7384"
10896 7384
PPID PID
C:\crp>
WMIC zeigt die Assoziationen zwischen PID und PPID. Suchen Sie dann im Task-Manager nach 10896 (10896 ist die PPID, die für die PID von calc.exe von 7384 aufgeführt ist), und im Task-Manager sehe ich, dass der Prozess mit der PID von 10896 cmd.exe ist. Dies ist der Prozess, den ich zum Starten von calc verwendet habe. exe Und tatsächlich ist cmd.exe der übergeordnete Prozess, der calc.exe hervorgebracht hat
Methode 2 - Prozessüberwachung
Sie können dies im sysinternalen Prozessmonitor tun.
Klicken Sie in der Menüleiste auf filter..filter und fügen Sie einen Filter hinzu, der den Namen oder Pfad oder die PID des Prozesses filtert, z. B. den Prozessnamen calc.exe, oder einen Filter für den Pfad, und geben Sie c: \ windows \ system32 \ calc.exe ein
Ich habe zufällig den Prozessnamen verwendet
Machen Sie OK .. und file..capture, wenn es noch nicht erfasst wurde.
Doppelklicken Sie auf den richtigen Prozess. Laden Sie in diesem Fall das Bild calc.exe und ein Eigenschaftendialogfeld wird angezeigt. Klicken Sie auf die richtige Registerkarte "Prozess", und Sie sehen die PID und PPID (übergeordnete Prozess-ID).
Und wenn Sie die PPID wie jetzt kennen, können Sie sie natürlich im Task-Manager nachschlagen, um zu erfahren, aus welchem Prozess sie hervorgegangen ist
Wenn dies ein Prozess war, die im Hintergrund ausgeführt wurde, würde ich wahrscheinlich verwenden die
Process Explorer
oderwmic
Prozessansätze skizziert durchBarlop
oderRobert Koritnik
. Wenn der Prozess vorübergehend ist und sehr schnell gestartet / beendet wird und nicht genügend Zeit bleibt, um die erforderlichen Klicks und Tastenanschläge auszuführen, würde ich Process Monitor verwenden, wie von nixda beschrieben.Ich bin etwas spät zu dieser Party, aber der Vollendung halber:
Eine andere Alternative dazu (wenn Sie aus irgendeinem Grund den Prozessmonitor nicht verwenden möchten) ist die Verwendung der integrierten Prozessverfolgung. Dies kann aktiviert werden, indem Sie zu:
Systemsteuerung -> Verwaltung -> Lokale Sicherheitsrichtlinie -> Lokale Richtlinien -> Überwachungsrichtlinie Wenn in Ihrer Systemsteuerung keine Verwaltung vorhanden ist, können Sie die lokale Sicherheitsrichtlinie auch öffnen, indem Sie auf die Schaltfläche Start klicken und secpol.msc eingeben .
Sie sollten verschiedene Überwachungsoptionen sehen, einschließlich der Überwachung des Prüfprozesses . Aktivieren Sie diese Option für die Kategorie Erfolg .
In der Ereignisanzeige -> Windows-Protokolle -> Sicherheit sehen Sie nun ein Ereignis für die "Prozesserstellung" (das ist die Ereignis-ID 4688), den Namen / Pfad des zu erstellenden Prozesses und ein Feld mit dem Namen " Ersteller-Prozess-ID" . Diese enthält die hexadezimale Darstellung der PID des Prozesses, der diesen Prozess erstellt hat (Sie können dies einfach mit calc.exe in der Programmiereransicht konvertieren ).
Sie können diese PID (die PID dieses 'Erstellungsprozesses', dh die PPID) entweder im Task-Manager oder in der Ausgabe von etwas wie tasklist / svc suchen .
Wenn der Prozess nicht mehr vorhanden ist, können Sie nach anderen Ereignissen mit der ID 4688 für diese andere PID suchen, ab dem Zeitpunkt ihrer Erstellung.
quelle
Nur wenige mögliche Vorschläge zum Ausprobieren (in zufälliger Reihenfolge), von denen einige möglicherweise keine realisierbaren Ergebnisse liefern oder die Sie bereits ausprobiert haben. Ich habe diese nicht selbst ausprobiert, daher biete ich nur Ideen an, die andere möglicherweise vermissen. Brainstorming ... Beachten Sie, dass die meisten meiner Vorschläge eher auf die Problemminderung abzielen, als sie an der Grundursache zu lösen. sie sind die so genannten verzweifelten Maßnahmen oder Plan Z .
1. Befehlszeileninformationen im Task-ManagerHaben Sie die Spalte Befehl im Task-Manager überprüft, ob sie diese Informationen enthält? Ich nehme an, Sie haben es bereits versucht.
2. Prozessinformationen im Prozess-Explorer
Wenn Command leer ist, würde ich Process Explorer von SysInternals ausprobieren und prüfen, ob ich weitere Informationen zu diesem bestimmten Prozess erhalte.3. Unterbrechen eines Prozesses
Wenn Sie die Wurzel Ihres Problems nicht zu finden scheinen, können Sie versuchen, den Prozess anzuhalten, damit er immer noch vorhanden ist, aber nichts bewirkt. Sie können dies entweder mit dem Ressourcenmonitor tun
oder SysInternals Process Explorer
Ein unbekannter Prozess, der es startet, überprüft wahrscheinlich Prozesse (nach Namen) und wenn es sieht, dass es nicht da ist, startet es es. Wenn Sie es anhalten, ist es vorhanden, sodass dieser Initialisierungsprozess möglicherweise keine neue Instanz erzeugt.
Dies kann fehlschlagen, wenn der Initialisierungsprozess andere Mittel zur Prozesserkennung (Kommunikation zwischen Prozessen) verwendet. Diese Art der Prozesserkennung ist jedoch viel schwieriger zu entwickeln, sodass einfachere Optionen gewonnen werden können.
4. Benutzerdefiniertes Programm
Wir haben es hier möglicherweise mit zwei Prozessen zu tun. Erster , der die Existenz des zweiten Prozesses überprüft und ihn startet (den Sie töten). Wenn der zweite ausgeführt wird, wird möglicherweise die Befehlszeile angezeigt. Wenn Sie jedoch wissen, dass dies nicht dazu beiträgt, ihn nicht einmal zu starten, sind Sie möglicherweise eher hinter dem ersten Prozess her, der tatsächlich alles initiiert. Pech.
Da Sie jedoch mit Computern vertraut zu sein scheinen, können Sie den zweiten Prozess (sofern die Befehlszeile bekannt ist) durch Ihre eigene ausführbare Datei ersetzen, die nichts tut und nur dort sitzt. Es muss denselben Prozessnamen haben. Es könnte auch sofort von selbst starten und enden.
Wenn Sie wirklich gut in der Entwicklung von Betriebssystemen auf niedriger Ebene sind, können Sie einen zweiten Prozess schreiben, um zu überprüfen, wer ihn gestartet hat, wenn dies möglich ist. Ich bin nicht sicher, aber die Windows-API sollte solche Informationen bereitstellen. Dies würde Sie dann an die Wurzel Ihres Problems bringen.
5. Taskplaner
Es kann sein, dass Ihr Prozess nicht von anderen Prozessen erzeugt wird, sondern von einem definierten geplanten Aufgabenjob, der jede Minute ausgeführt wird. Ich bin mir nicht sicher, ob Sie das bereits überprüft haben, aber es kann der Fall sein.
6. Infektionsreinigung
Betrachtet man eine Virusinfektion? Versuchen Sie es zu erkennen und zu reinigen.
quelle