Procmon. Das berüchtigte Windows Sysinternals-Dienstprogramm, um alle Arten von Windows-Aktivitäten zu verfolgen. Bekannt für seine Fähigkeit, rogue Software-Installer zu verfolgen, die unbekannte Änderungen an Registrierungsschlüsseln vornehmen oder möglicherweise die Spuren eines Virus untersuchen.
Wenn Sie die Windows-Registrierung, das Dateisystem, Prozesse oder Netzwerkaktivitäten inspizieren müssen und sich dafür entschieden haben, Procmon zu verwenden, ist dieser Artikel für Sie geeignet.
In diesem Ultimativen Leitfaden erfahren Sie alles, was es über die Verwendung des Procmon-Dienstprogramms zu wissen gibt, angefangen bei der Installation über die grundlegende Verwendung bis hin zu verschiedenen Anwendungsfällen, die Ihnen helfen werden, alle Arten von Aktivitäten zu verfolgen.
Voraussetzungen
Dieser Ultimative Leitfaden gilt für nahezu alle Windows-Systeme, aber um die Vollständigkeit zu wahren (und um zu verhindern, dass Sie versuchen, Procmon auf einem Windows 3.1-Computer auszuführen), benötigen Sie Folgendes:
- A Windows Vista or Windows Server 2008 or higher machine (x86 or x64)
Das ist alles! Sie werden Procmon in den folgenden Abschnitten herunterladen und installieren. Der Leitfaden verwendet die Version 3.6 von Procmon auf einem Windows 10 Build 1909 x64-System.
Herunterladen und Ausführen von Procmon
Um loszulegen, müssen Sie Procmon auf Ihrem Windows-Computer ausführen. Sie können es auf zwei verschiedene Arten erhalten: über die traditionelle Download-Methode oder das, was Windows Sysinternals Sysinternals Live nennt.
Auf die altmodische Art
Procmon muss nicht installiert werden; es handelt sich um eine einzelne ausführbare Datei. Sie können sie herunterladen, indem Sie die ZIP-Datei herunterladen. Sobald Sie sie heruntergeladen haben, extrahieren Sie die ZIP-Datei mit Ihrem bevorzugten Tool. Unten finden Sie einen PowerShell-Code-Schnipsel, falls Sie es in Ihrem Home-Verzeichnis gespeichert haben. Dieser Code-Schnipsel erstellt einen Ordner unter ~\ProcessMonitor mit allen benötigten Dateien.
Innerhalb des Ordners ~\ProcessMonitor sehen Sie fünf Dateien:
- Eula.txt – Die Lizenzvereinbarung, die Sie akzeptieren müssen, bevor Sie Procmon ausführen.
- procmon.chm – Die Hilfedatei, die alle bereitgestellten Dokumentationen enthält.
- Procmon.exe – Die Haupt-EXE, die die richtige Procmon-Instanz (x86 oder x64) startet.
- Procmon64.exe – Die x64-Procmon-Binärdatei.
- Procmon64a.exe – Die Alpha-64-Procmon-Binärdatei.
Führen Sie Procmon jetzt aus, indem Sie die Datei ~\ProcessMonitor\procmon.exe aufrufen.
Procmon läuft nur mit erhöhten Berechtigungen, sodass Sie aufgefordert werden, dies zu akzeptieren, wenn Sie UAC aktiviert haben. Es gibt jedoch einen Weg, dies zu umgehen, worauf später in diesem Leitfaden eingegangen wird.
Sysinternals Live
Wenn Sie lieber keine EXE herunterladen möchten (oder können), können Sie auch den Sysinternals Live-Ordner verwenden. Öffnen Sie dazu den Datei-Explorer und fügen Sie \\live.sysinternals.com\tools ein. Sie sehen dann einen Ordner wie einen gewöhnlichen Netzwerkfreigabeordner, der alle Sysinternals-Dateien einschließlich procmon enthält.

Scrollen Sie nach unten, bis Sie procmon finden, doppelklicken Sie darauf und voilà, Sie führen procmon aus!
Anpassen des Procmon-Startverhaltens
Standardmäßig startet procmon und fordert Sie auf, die Endbenutzer-Lizenzvereinbarung (EULA) zu akzeptieren und auch ein Fenster zu öffnen. Mit Hilfe der Befehlszeile können Sie dieses Standardverhalten anpassen.
Zum Beispiel, wenn Sie procmon minimiert starten möchten, verwenden Sie den /Minimized
-Schalter.
Vielleicht führen Sie procmon auf einem neuen Computer aus und möchten die EULA-Aufforderung lieber nicht sehen. Sie können das beim Start mit dem /AcceptEula
-Schalter deaktivieren.
Auch wenn es heutzutage weniger wahrscheinlich ist, überprüft procmon jedes Mal, wenn es gestartet wird, ob Sie ein 64-Bit- oder 32-Bit-Betriebssystem ausführen. Wenn Sie sich auf einem 64-Bit-Computer befinden, startet es einen 64-Bit-Prozess und umgekehrt. Wenn Sie sich auf einem 64-Bit-Computer befinden und entweder procmon als 32-Bit-Prozess ausführen möchten oder eine Protokolldatei (dazu später mehr) lesen möchten, die von einem 32-Bit-Computer generiert wurde, verwenden Sie den /Run32
-Schalter.
Procmon verfügt über andere Befehlszeilenschalter zur Anpassung des Verhaltens, über die Sie in den kommenden Abschnitten erfahren werden.
Einführung in Procmon
Wenn Sie Procmon zum ersten Mal starten, werden Sie vielleicht von den Optionen überwältigt. Keine Sorge, in diesem Leitfaden lernen Sie alles! Unten sehen Sie eine typische Procmon-Aufzeichnung in Bearbeitung.

Sobald Sie Procmon ausführen, beginnt es, verschiedene Arten von Windows-Ereignissen zu erfassen.
Wenn Sie nicht möchten, dass Procmon automatisch Ereignisse erfasst, können Sie es über die Befehlszeile mit dem Befehl
procmon.exe /NoConnect
starten.
Wie Sie im obigen Screenshot unter der Spalte Operation sehen können, gibt es verschiedene Symbole, die jeweils verschiedene Klassen von Windows-Ereignissen repräsentieren. Procmon erfasst Ereignisse aus fünf verschiedenen Klassen:
- Registry
- Dateisystem
- Netzwerk
- Prozesse
- Profiling-Ereignisse
Jedes Ereignis in allen Klassen wird in einem einzelnen Listenbereich mit sieben Spalten dargestellt:
- Tageszeit – Die Zeit, zu der das Ereignis aufgetreten ist.
- Prozessname – Der Name des Prozesses, der das Ereignis ausgelöst hat.
- PID – Die Prozess-ID.
- Operation – Der Ereignistyp, z.B. ob der Prozess eine Datei geöffnet, einen Registry-Schlüsselwert geändert usw. hat.
- Pfad – Der Pfad zum Objekt, mit dem das Ereignis interagiert hat, z.B. ein Dateipfad, ein Registrierungspfad usw.
- Ergebnis – Diese Spalte enthält zahlreiche Werte, um das Ergebnis des Ereignisses anzuzeigen. Dieser Wert kann so einfach sein wie ERFOLG oder spezifisch für das Ereignis wie NEUPARSUNG, PUFFERÜBERLAUF, NAME NICHT GEFUNDEN, etc.
- Detail – Diese Spalte enthält alle Details, sobald Sie ein Ereignis ausgewählt haben, das Sie anzeigen möchten.
Wenn Sie eine bestimmte Spalte nicht sehen möchten oder sehen möchten, welche anderen Spalten verfügbar sind, klicken Sie mit der rechten Maustaste auf einen Spaltenkopf und wählen Sie Spalten auswählen. Es wird ein Dialogfeld angezeigt, in dem Sie die anzeigbaren Spalten anpassen können.

In dem Ereignisfenster doppelklicken Sie auf ein Ereignis. Sie können viele weitere Details über den Prozess und das Ereignis selbst anzeigen, indem Sie die Registerkarten Ereignis, Prozess und Stapel betrachten.

Aktivieren und Deaktivieren von Erfassungen
Sie haben die vollständige Kontrolle über den Erfassungsprozess. Sie können entweder den gesamten Erfassungsprozess deaktivieren oder die Erfassung nach Ereignisklasse deaktivieren.
In der oberen Menüleiste sehen Sie ein Vergrößerungsglas-Symbol (unten). Wenn das Vergrößerungsglas ein rotes X darüber hat, bedeutet das, dass die Erfassung deaktiviert ist. Andernfalls ist die Erfassung aktiviert.

Lassen Sie procmon nicht länger als nötig Ereignisse erfassen. Es verwendet virtuellen Speicher, um all diese Ereignisse zu speichern, und wenn Sie nicht vorsichtig sind, könnten Sie Windows zum Absturz bringen! Sie können dieses Verhalten später ändern, wie Sie sehen werden.
Wenn Sie lieber selektiver sein möchten, können Sie auch die Erfassung jeder Ereignisklasse steuern. In der Menüleiste sehen Sie fünf der gleichen Symbole in der Spalte Operation angezeigt. Durch Klicken auf diese Schaltflächen können Sie gesamte Ereignisklassen aktivieren und deaktivieren.

Fahren Sie mit der Maus über jedes Symbol, um zu sehen, welche Art von Aktivität jedes Symbol repräsentiert.
Sie sehen sofort, sobald Sie ein Symbol anklicken, wendet Procmon einen Ereignisfilter an. Je nachdem, wie viele Ereignisse bisher erfasst wurden, sehen Sie möglicherweise ein Popup wie das untenstehende.

Standardmäßig ist das am weitesten rechts befindliche Symbol (der schwarze und grüne Graph) nicht aktiviert. Wenn Sie diese Ereignisklasse beim Start von Procmon aktivieren möchten, können Sie Procmon über die Befehlszeile mit
.\procmon.exe /Profiling
aufrufen.
Sie können die Anzahl der Ereignisse im Fenster am unteren Rand sehen. Wie Sie unten sehen können, hat Procmon 84.334 Ereignisse verarbeitet, aber aufgrund des angewendeten Ereignisfilters werden nur 15.912 davon oder 18 % angezeigt. Sie können auch sehen, dass diese Ereignisse im virtuellen Speicher gespeichert werden (dazu später mehr).

Ereignisfilter
Um Procmon zu verstehen, müssen Sie zweifellos das Konzept der Ereignisfilter verstehen. Ereignisfilter trennen das Signal vom Rauschen. Ereignisfilter verbergen alle Ereignisse, an denen Sie nicht interessiert sind. Oben haben Sie Ereignisfilter nach ganzen Ereignisklassen angewendet, aber Sie können noch viel feiner vorgehen.
Es gibt mehrere Möglichkeiten, mit Ereignisfiltern zu interagieren. Fangen wir einfach an. Klicken Sie auf den Menüpunkt Filter oben. Dort sehen Sie viele verschiedene Optionen, um mit Filtern zu arbeiten.

Filter anzeigen
Standardmäßig erstellt procmon einen Filter für Sie. Unter dem Menüpunkt Filter klicken Sie auf Filter…. Es öffnet sich ein Prozessüberwachungsfilter mit zwei Bereichen; einer zum Filtern Ihrer Filterregeln und einer zum Anzeigen aller Regeln, die Sie eingerichtet haben. Ein Beispiel dafür finden Sie unten.

Standardmäßig zeigt procmon die obigen Filter an, wenn Sie es starten. Wenn Sie dieses Fenster ausblenden möchten, können Sie dies tun, indem Sie procmon mit dem Schalter
/Quiet
starten.
Sie sollten sehen, dass procmon auch ohne eigene Filter eine integrierte Reihe von Filterregeln verwendet. Wenn Sie im Feld Prozessüberwachungsfilter nach unten scrollen, sehen Sie viele verschiedene Arten von definierten Regeln. Hier können Sie jede Kategorie, jeden Operator, jeden Wert und jede Aktion sehen, die für jede Regel festgelegt sind.
Diese Filter werden angewendet, weil Sie in der Regel die Ereignisse, die diese Filter ausschließen, nicht sehen müssen. Aber wenn Sie alle Ereignisse sehen möchten, können Sie auch einfach alle Standardfilter entfernen oder auf Filter —> Erweiterte Ausgabe aktivieren klicken, wie unten gezeigt.

Beispielsweise sehen Sie oben ein paar Regeln, die Prozessname für den Wert Spalte, ist für Beziehung, verschiedene procmon-bezogene Prozesse für den Wert Spalte und eine Aktion von Ausschließen anzeigen. Auf Deutsch bedeuten diese Regeln, dass procmon beispielsweise einen Prozess mit dem Namen procmon.exe nicht anzeigen soll.
Verwalten von Ereignisfilterregeln
Je nach Anwendungsfall müssen Sie wahrscheinlich eigene Regeln hinzufügen. Es gibt verschiedene Möglichkeiten, Regeln hinzuzufügen.
Verwendung des Process Monitor Filterfelds
Im letzten Abschnitt haben Sie gesehen, wie das Process Monitor Filter-Feld aussieht und alle Regeln angezeigt wurden. In diesem Feld können Sie auch Regeln erstellen, ändern und entfernen.
Angenommen, Sie möchten nur die Zeiten sehen, in denen der Prozess explorer.exe einen Registrierungsschlüssel abgefragt hat.
Hinzufügen von Ereignisfiltern
Im Process Monitor Filter-Feld:
- Klicken Sie auf die Dropdown-Liste ganz links. Diese Liste zeigt alle verschiedenen Kategorien von Ereignissen, auf die Sie filtern können. Wie unten zu sehen ist, gibt es viele!
Jeder Eintrag in dieser Liste entspricht einer Spalte, die im Hauptbildschirm angezeigt wird, wie unten gezeigt. Wählen Sie für den Zweck dieses Artikels Prozessname aus.

2. Wählen Sie eine Kategorie und dann einen Operator aus. Standardmäßig wird das Dropdown-Feld is sein, aber Sie haben viele andere Optionen, wenn Sie auf das Dropdown klicken. Diese Operatoren ermöglichen es Ihnen, die von Ihnen gewählte Option auf verschiedene Arten zu filtern. Da Sie nach einem Prozess suchen, der genau explorer.exe ist, wählen Sie is.

3. Wählen Sie schließlich den Prozessnamen wie unten dargestellt. Sie werden feststellen, dass, da Sie Prozessname als Kategorie gewählt haben, procmon automatisch alle aktuell laufenden Prozesse zur Auswahl bringt.

4. Stellen Sie sicher, dass Sie Include ausgewählt haben, da Sie nur die Ereignisse sehen möchten, die diesem Kriterium entsprechen. Klicken Sie dann auf die Schaltfläche Add, um die Regel zu Ihrem aktuellen Filter hinzuzufügen. Wie unten zu sehen ist, wird die Include-Regel als grünes Häkchen angezeigt.
5. Da Sie alle Ereignisse sehen möchten, bei denen explorer.exe einen Registrierungsschlüssel abfragt, fügen Sie auch die RegQueryKey-Operation hinzu. Wenn Sie fertig sind, sollten beide Regeln hinzugefügt sein.

6. Klicken Sie auf OK und Sie sehen dann, wie das Hauptfenster alle Ereignisse entfernt, die nicht den von Ihnen definierten Filterregeln entsprechen.

Entfernen von Ereignisfilterregeln
Sie können auch genauso einfach Filterregeln entfernen und ändern.
- Klicken Sie oben im Hauptfenster auf das Filter-Symbol, um das Process Monitor Filter-Fenster zu öffnen.

2. Betonen Sie beide der oben erstellten Filterregeln, klicken Sie auf die Entfernen-Schaltfläche wie unten gezeigt und klicken Sie auf OK. Diese Aktion entfernt beide zuvor hinzugefügten benutzerdefinierten Regeln.

Sie können auch auf die Zurücksetzen-Schaltfläche klicken, um automatisch alle benutzerdefinierten Filterregeln zu entfernen.
Immer wenn Sie einen Filter anwenden, beenden Sie Procmon und starten Sie es erneut, dieser Filter wird erneut angewendet. Wenn Sie sicherstellen möchten, dass kein Filter angewendet wird, wenn Sie Procmon starten, können Sie Procmon mit dem
/NoFilter
-Schalter aufrufen.
Hinzufügen von Filterregeln mit Rechtsklick
Sie können auch Filterregeln über ein Kontextmenü hinzufügen, wenn Sie mit der rechten Maustaste auf einen Prozess klicken. Wie unten gezeigt, können Sie jede Art von Regel direkt aus diesem Menü erstellen; es ist überhaupt nicht erforderlich, zur Prozessüberwachungsfilter-Box zu gehen!

Um Filterregeln zu entfernen, die über das Kontextmenü mit der rechten Maustaste erstellt wurden, müssen Sie immer noch zur Prozessüberwachungsfilter-Box gehen, um sie zu entfernen.
Benutzerdefinierte Filter speichern und verwalten
Wenn Sie ein erfahrener Procmon-Benutzer sind, wird wahrscheinlich irgendwann der Zeitpunkt kommen, an dem Sie Filterregelsets für verschiedene Gelegenheiten haben. Mit den Filter-Speicher- und Organisierungsfunktionen von Procmon können Sie so viele dieser Sets verwalten und speichern, wie Sie möchten.
Angenommen, Sie haben eine Reihe von benutzerdefinierten Filtern definiert und möchten sie zu einem späteren Zeitpunkt erneut verwenden. Sie können diesen Filter speichern, indem Sie zu Filter gehen, Filter speichern auswählen und wie unten gezeigt einen Namen angeben.

Sobald der Filter gespeichert ist, können Sie zu Filter gehen, auf Filter organisieren klicken, wo Sie dann alle gespeicherten Filter sehen. Von hier aus können Sie auf einen Filter klicken, auf OK klicken und Ihr gespeicherter Filter wird auf das aktuelle Fenster angewendet.

Sie können auch einen gespeicherten Filter laden, indem Sie über Filter laden im Dropdown-Menü Filter fahren und Ihren gespeicherten Filter aus der Liste auf der rechten Seite auswählen.

Importieren und Exportieren von Filtern
Wenn Sie erwarten, Procmon auf einem anderen Computer zu laden und alle gespeicherten Filter zu behalten, haben Sie Pech. Procmon hat keinen Cloud-Service zum Synchronisieren von Filtern. Sie können jedoch Filter manuell exportieren und später importieren.
Um Procmon-Filter zu exportieren:
- Gehen Sie zum Feld Filter organisieren.
- Klicken Sie auf den Filter, den Sie bereits gespeichert haben und exportieren möchten.
- Klicken Sie auf die Schaltfläche Exportieren.
- Geben Sie einen Namen ein, wählen Sie einen Pfad und klicken Sie auf OK. Sie werden feststellen, dass alle Procmon-Filter mit einer PMF-Erweiterung gespeichert sind.
Um Procmon-Filter zu importieren:
- Gehen Sie zum Feld Filter organisieren.
- Klicken Sie auf die Schaltfläche Importieren.
- Finden Sie den Filter, den Sie importieren möchten, und klicken Sie auf OK.
Sie können unten eine visuelle Anleitung dieser Schritte sehen.

Importieren und Exportieren von Procmon-Konfigurationen
Wie Sie oben gelernt haben, können Sie procmon Filter über PMF-Dateien exportieren und importieren. Aber Filter sind nur eine Komponente, die eine procmon-Instanz ausmacht. Sie können die Spalten anpassen, den Speicherort ändern (mehr dazu später) und mehr. Wäre es nicht schön, all diese Einstellungen auch zu speichern? Sie können es tun!
Um die gesamte procmon-Konfiguration zu speichern, klicken Sie auf Datei —> Konfiguration exportieren und wählen Sie einen Ort, an dem Sie die PMC-Datei (procmon-Konfiguration) speichern möchten.

Sobald sie gespeichert ist, können Sie procmon auf demselben Computer (oder sogar auf einem anderen) schließen, procmon öffnen und auf Datei —> Konfiguration importieren klicken, wo procmon dann alle gleichen Filter und andere Einstellungen anwendet, genau so wie sie exportiert wurden.
Sie können auch gespeicherte Konfigurationen (einschließlich Filter) über die Befehlszeile mit dem Schalter /LoadConfig laden, gefolgt von dem Pfad der Datei, z.B. ./procmon.exe /LoadConfig C:\ProcmonConfigs\file_deletion.pmc.
Ereignisse hervorheben und zu Filtern konvertieren
Vielleicht müssen Sie bestimmte Ereignisse leichter erkennen, wollen aber nicht unbedingt Ereignisse mit einem Filter aus der Ansicht entfernen. In diesem Fall können Sie Highlights verwenden. Mit Highlights können Sie Regelsätze erstellen, ähnlich wie Filter, anstatt Ereignisse auszublenden, wird die Hintergrundfarbe der Ereignisse geändert.
Vielleicht sehen Sie einen Prozess in der Ereignisliste namens ctfmon.exe, den Sie in der Liste hervorheben möchten. Sie können eine Hervorhebungsregel erstellen, indem Sie:
- Rechtsklicken Sie auf das Ereignis, dessen Attribut Sie hervorheben möchten.
- Klicken Sie auf Hervorheben und wählen Sie ein Attribut dieses Ereignisses aus, das Sie hervorheben möchten. In diesem Beispiel wählen Sie Prozessname. Sie sehen dann, wie sich die Hintergrundfarbe in ein helles Blau ändert.
- Nachdem die Hervorhebungsregel erstellt wurde, können Sie zur Box Hervorhebung im Prozessmonitor gehen, indem Sie auf Filter klicken —> Hervorheben. Dort sehen Sie die erstellte Hervorhebungsregel.
- Von der Box Hervorhebung im Prozessmonitor aus können Sie Regeln hinzufügen und entfernen, genauso wie Sie es mit einem Filter tun können.
- Wenn Sie einige Hervorhebungsregeln erstellt haben und diese in einen Filter umwandeln möchten, können Sie dies tun, indem Sie auf die Schaltfläche Filter erstellen in der Box Hervorhebung im Prozessmonitor klicken.
Sie können unten eine visuelle Anleitung zu diesen Schritten sehen.

Exportieren und Öffnen von Ereignissen in/von Protokolldateien
Um Ereignisse im Procmon in einem Fenster anzuzeigen, müssen sie irgendwo gespeichert werden. Standardmäßig werden Ereignisse im virtuellen Speicher gespeichert, genauer gesagt in Ihrer Seitendatei.

Je nachdem, wie groß Ihre Seitendatei definiert ist (und das Systemeinsatzlimit) hängt davon ab, wie viele Ereignisse Procmon speichern kann.
Procmon kann bis zu 199 Millionen Ereignisse erfassen.
Speichern von Ereignissen in einer Protokolldatei
Vielleicht möchten Sie diese Ereignisse für spätere Untersuchungen speichern oder auf einem anderen Computer laden? In diesem Fall müssen Sie Ereignisse in einer Protokolldatei (PML) speichern.
Eine Möglichkeit, diese nützlichen Ereignisse zu speichern, besteht darin, auf Datei zu klicken —> Speichern. Diese Aktion öffnet das Dialogfeld Speichern unter, in dem Ihnen einige Optionen angezeigt werden.
Zu speichernde Ereignisse:
- Alle Ereignisse – Diese Option entspricht genau dem, wie es scheint. Es speichert alle Ereignisse, die Procmon erfasst hat, unabhängig davon, ob Sie einen Ereignisfilter angewendet haben oder nicht, in einer Datei.
- Mit dem aktuellen Filter angezeigte Ereignisse – Diese Option speichert nicht alle erfassten Ereignisse, sondern nur diejenigen, die Ihren derzeit aktiven Ereignisfilter bestanden haben.
- Hervorgehobene Ereignisse – Diese Option exportiert nur die Ereignisse in das Protokoll, die Sie derzeit hervorgehoben haben.
Format:
- Native Process Monitor Format (PML) – Das Standardformat zum Speichern aller Ereignisse (PML).
- Mit Kommas getrennte Werte (CSV) – Speichern Sie alle Ereignisse in einer CSV-Datei.
- Erweiterbare Auszeichnungssprache (XML) – Speichern Sie alle Ereignisse in einer XML-Datei. Dieses Format ermöglicht es Ihnen auch, Trace-Traces zu speichern (mehr dazu später) und Stack-Symbole aufzulösen.

Klicken Sie auf OK, und Procmon wird alle derzeit erfassten Ereignisse, die Ihren Kriterien entsprechen, in die von Ihnen gewählte Datei übertragen.
Öffnen von gespeicherten Ereignisprotokollen
Sie haben Tausende von Ereignissen auf einem Computer erfasst, diese Erfassungssitzung in einer PML-Datei gespeichert und sie zur Untersuchung auf einen anderen Computer kopiert. Und jetzt? Sie müssen sie öffnen.
Sie können jede PML-Datei öffnen, unabhängig davon, ob Sie sie auf Ihrem lokalen Computer erfasst haben oder nicht, indem Sie einfach zu Datei gehen -> Öffnen und die PML-Datei auswählen.
Sie können Protokolle auch über die Befehlszeile mit dem /OpenLog-Schalter öffnen, z.B. procmon.exe /OpenLog C:\MeineProtokolldatei.pml.
Ereignisse automatisch protokollieren
In dem vorherigen Abschnitt haben Sie gelernt, wie Sie Ereignisse nach der Erfassung in ein Protokoll exportieren können. Aber was ist, wenn Sie bereits im Voraus wissen, dass Sie Ereignisse in einer PML-, XML- oder CSV-Datei haben möchten? Sie können procmon so einrichten, dass Ereignisse automatisch in einem dieser Protokollformate erfasst werden.
Auch das Speichern von Ereignissen in der Auslagerungsdatei ist in Ordnung, wenn Sie sich in einer einfachen Ad-hoc-Problembehebungssitzung befinden, die weniger als eine Stunde dauert. Diese Methode hat jedoch einige Nachteile.
- Wenn Sie procmon schließen, sind die Ereignisse verschwunden.
- Wie bereits erwähnt, kann die Größe Ihrer Auslagerungsdatei außer Kontrolle geraten.
Wenn Sie den virtuellen Speicher als Speicherort verwenden, können Sie durch Klicken auf Datei -> Backing-Dateien herausfinden, wie viel Speicherplatz procmon noch zur Verfügung steht.
Was tun? Den Speicherort ändern.
Ereignisse auf der Festplatte speichern
Sie können den Speicherort, an dem procmon Ereignisse speichert, von der Auslagerungsdatei auf die Festplatte ändern, indem Sie:
- Wenn Sie gerade eine Erfassung ausführen, beenden Sie diese.
2. Klicken Sie auf Datei —> Sicherungsdateien. Sie sehen dann eine Zusammenfassung der gespeicherten Ereignisse und ihrer Größe sowie eine Option zur Änderung des Speicherorts.

3. Um den Speicherort auf eine Datei zu ändern, klicken Sie auf das Feld Verwenden Sie die Datei mit dem Namen:, klicken Sie auf die Auslassungspunktschaltfläche und definieren Sie einen Dateispeicherort.
Versuchen Sie, ein anderes Festplattenlaufwerk als das zu verwenden, auf dem Procmon läuft, um die beste Leistung zu erzielen.
Sie können Procmon auch zwingen, eine Datei als Speicherort zu verwenden, indem Sie es ebenfalls über die Befehlszeile starten und den
/BackingFile
-Schalter verwenden. Wenn Sie wieder zum Verwenden der Auslagerungsdatei zurückkehren möchten, verwenden Sie den/PagingFile
-Schalter.
Protokolldateien konvertieren
Procmon kann Protokolldateien in drei verschiedenen Formaten speichern; PML, CSV und XML. Vielleicht haben Sie eine Protokolldatei als PML gespeichert und müssen die Ereignisse mit einem Skript oder einem anderen Tool analysieren. In diesem Fall können Sie diese PML-Protokolldatei auf der Befehlszeile in XML oder CSV konvertieren.
Sagen wir, Sie haben eine PML-Protokolldatei unter C:\capture.pml. Sie möchten diese Protokolldatei in XML und eine in CSV-Format konvertieren. Sie können dies tun, indem Sie die Protokolldatei zunächst mit dem /OpenLog
-Schalter öffnen und dann einen /Save*
-Schalter verwenden, um sie umzukehren und zu speichern.
Procmon hat einen standardmäßigen /SaveAs
-Parameter, der es Ihnen ermöglicht, ein Protokoll in einem der drei oben genannten Formate zu speichern. Der /SaveAs
-Parameter legt das Dateiformat je nach der von Ihnen angegebenen Dateierweiterung fest.
Hier sind einige Beispiele:
Konvertieren Sie das Protokoll capture.pml in capture.xml:
Konvertieren Sie das Protokoll capture.pml in capture.csv:
Erinnern Sie sich an die Optionen für Stack-Trace und Stack-Symbolauflösung im Dialogfeld Speichern unter oben? Sie können diese Optionen auch mit /SaveAs1
und /SaveAs2
aktivieren.
Sie können Stack-Traces und Symbolinformationen nur im XML-Format speichern.
Konvertieren Sie das Protokoll capture.pml in capture.xml, einschließlich Stack-Informationen:
Konvertieren Sie das Protokoll capture.pml in capture.xml, einschließlich Stack-Informationen mit Symbolen:
Beachten Sie, dass das Hinzufügen von Stack-Traces und Symbolen die Konvertierungszeit drastisch erhöhen wird und Sie zweifellos einen Fortschrittsindikator wie unten gezeigt sehen werden.

Erfassen von Ereignissen während des Boot-Vorgangs
Manchmal werden die Informationen, die Sie untersuchen müssen, nicht generiert, während Windows hochgefahren ist. Möglicherweise müssen Sie auch untersuchen, was ein Prozess tut, wenn Windows gerade hochfährt.
Es ist üblich, Probleme wie langsames Hochfahren oder möglicherweise Malware zu debuggen, die sofort ausgeführt wird, wenn Windows startet. Procmon verfügt über eine Funktion namens Bootzeitprotokollierung, die Sie aktivieren können, um diese Informationen zu erfassen.
Um die Protokollierung beim Booten zu aktivieren, klicken Sie auf Optionen —> Boot-Protokollierung aktivieren im Menü wie unten gezeigt.

Nachdem Sie auf Boot-Protokollierung aktivieren geklickt haben, wird ein Dialogfeld angezeigt, das nach optionalen Informationen fragt. In diesem Dialogfeld können Sie Ereignisse zur Thread-Profilerstellung erfassen.
Das Aktivieren von Thread-Profiling-Ereignissen ist ein fortgeschrittenes Anwendungsszenario. Wenn Sie das Thread-Profiling aktivieren, erfasst Procmon Thread-Stack-Traces und CPU-Auslastung, die Sie zur Identifizierung der Ursache von CPU-bezogenen Leistungsproblemen verwenden können.

Nachdem Sie auf OK geklickt haben, aktiviert Procmon das Bootprotokollieren, was den Filtertreiber (dazu später mehr) anweist, auf den nächsten Neustart von Windows zu warten. Wenn Sie Windows neu starten, beginnt Procmon dann damit, Prozessereignisse zu erfassen, genau wie wenn Sie es manuell gestartet hätten.
Alle bootzeitlichen Ereignisdaten werden in einer temporären Protokolldatei namens C:\Windows\procmon.pmb gespeichert.
Wenn Windows wieder hochgefahren ist, öffnen Sie erneut Procmon. Sie sollten ein Dialogfeld wie unten sehen. Klicken Sie hier auf Ja, um die bootzeitlichen Daten in das PML-Format zu konvertieren, indem Sie dann die Protokolldatei auswählen, um die Daten zu speichern.

Während Procmon die Daten konvertiert, sehen Sie eine Fortschrittsanzeige wie unten.

Vergessen Sie nicht, Procmon nach einem Neustart erneut zu öffnen! Procmon beginnt damit, Ereignisse zu erfassen, sobald Windows in C:\Windows\procmon.pmb hochgefahren ist. Dies wird fortgesetzt, bis Sie es ausschalten, indem Sie Procmon erneut öffnen.
Ausführen von Procmon Remote
Auch wenn Procmon nur lokal auf einem Windows-Rechner läuft, können Sie Procmon über psexec oder das Invoke-Command
-Befehl von PowerShell remote ausführen.
Verwandte: PsExec: Der ultimative Leitfaden, Invoke-Command: Der beste Weg, Remote-Code auszuführen
Um Procmon mit dem Invoke-Command
-Befehl von PowerShell auszuführen, befolge diese Schritte:
- Aktiviere PowerShell Remoting auf dem entfernten Rechner, falls noch nicht aktiviert.
2. Kopiere den Procmon-Ordner über die PowerShell-Konsole auf den Remote-Computer.
3. Rufe Procmon über PowerShell auf und stelle sicher, dass du die EULA-Bestätigung überspringst, Procmon zwingst, Ereignisse in einer Sicherungsdatei zu speichern, anstatt im virtuellen Speicher, und keine Aufforderung für den Filter beim Start erfolgt.
4. Zu diesem Zeitpunkt erfasst Procmon. Reproduziere das Problem, das du erfassen möchtest.
5. Stoppe Procmon auf dem Remote-Computer unter Verwendung des /Terminate-Schalters.
6. Warte, bis Procmon heruntergefahren ist. Als Abkürzung kannst du periodisch nach dem Procmon-Prozess suchen und die Kontrolle an die PowerShell-Konsole zurückgeben, wenn er abgeschlossen ist.
7. Kopiere die entfernte Protokolldatei auf den lokalen Computer.
Jetzt hast du die Protokolldatei, die remote ausgeführt wurde, auf deinem lokalen Computer!
Wenn du ein ordentliches PowerShell-Skript für diese Erfassung möchtest, findest du es unten.
Einrichten von Langzeit-Procmon-Erfassungen
A busy Windows system can produce a lot of events procmon captures that can overwhelm your PC. If you intend to run procmon for an extended amount of time, there a few measure you should take into consideration.
Filterung von Ereignissen abbrechen
Wenn Procmon eine Erfassung durchführt, erfasst es alle Ereignisse. Du kannst Ereignisfilter erstellen und anwenden, aber diese Filter verbergen nur die Ereignisse auf dem Bildschirm; sie verhindern nicht, dass Procmon sie erfasst.
Wenn Sie längere Procmon-Aufzeichnungen durchführen möchten, ist es immer eine gute Idee, Drop Filtered Events aus dem Filter-Menü wie unten gezeigt auszuwählen.

Sobald Sie den Punkt Drop Filtered Events auswählen, beginnt Procmon sofort, alle gefilterten Ereignisse zu verwerfen. Procmon zeigt sie nicht auf dem Bildschirm an und speichert sie auch nicht im virtuellen Speicher oder einer Protokolldatei. Das vollständige Verwerfen unerwünschter Ereignisse trägt zur Ressourcenschonung bei.
Fortgeschrittene Themen
Sind Sie immer noch auf der Suche nach mehr Informationen zu Procmon und wie man es verwendet? Lassen Sie uns einige fortgeschrittene Themen erkunden! Diese Themen sind solche, die Sie wahrscheinlich nicht allzu oft benötigen werden. Sie drehen sich um eher versteckte Funktionen von Procmon, aber diese Informationen können bei der Fehlersuche hilfreich sein.
Filtertreiber
Um Ereignisse zu erfassen, registriert und verwendet Procmon einen Filtertreiber über den Windows Filter Manager (FltDrv). Dieser Filtertreiber namens PROCMON24 wird installiert, wenn Sie eine Aufzeichnung starten. Manchmal kann dieser Filtertreiber mit anderen Anwendungen in Konflikt geraten.
Nach dem Start von Procmon öffnen Sie eine erhöhte PowerShell-Konsole oder Eingabeaufforderung und führen Sie fltmc filters
aus. Das Dienstprogramm fltmc
listet, lädt und entlädt Filtertreiber. Bei der Ausführung sehen Sie den geladenen Filter PROCMON24 wie unten gezeigt.
Beachten Sie die Höhe von PROCMON24, die standardmäßig 385200 beträgt, während andere Filter eine niedrigere Nummer haben. Die Filter-Treiber-Höhe repräsentiert das Niveau, auf dem ein Filter-Treiber Ereignisse „sehen“ kann. Zum Beispiel kann procmon Ereignisse auf den Ebenen wcifs, luafv oder Wof nicht erkennen. Mehr dazu später.

Der PROCMON24-Filtertreiber bleibt auch dann geladen, wenn procmon nicht ausgeführt wird.
Manchmal kann es Probleme beim Laden eines Filtertreibers geben. Um das Problem zu beheben, öffnen Sie procmon mit dem Schalter
/NoConnection
, um die Verbindung zum Filtertreiber zu verhindern.
Abladen des PROCMON24-Filtertreibers
In einigen Fällen kann es zu Konflikten mit verschiedenen Hardwaregeräten kommen und der PROCMON24-Filtertreiber muss entladen werden. Diese Situation ist jedoch möglicherweise nicht so einfach, wie es scheint.
Sie können Filtertreiber mit dem Befehl fltmc unload
gefolgt vom Namen des Filtertreibers entladen.
Aber wenn Sie den obigen Befehl ausprobieren, werden Sie bald feststellen, dass er nicht funktioniert. Sie können diesen Filtertreiber nicht entladen, weil der Entwickler diese Möglichkeit anscheinend nicht hinzugefügt hat.

Wenn Sie den PROCMON24-Filtertreiber entladen müssen, ist leider ein Neustart die einzige Möglichkeit, dies zu tun.
Stack-Traces
Manchmal sind einfache Ereignisse wie das Lesen eines Registrierungsschlüssels, das Öffnen einer Datei oder das Aufrufen einer Netzwerkadresse nicht tief genug. Sie müssen tiefer graben und die Geschichte der tatsächlichen Windows-API-Funktionsaufrufe sehen, die ein Prozess aufruft. Sie müssen den Stack-Trace eines Prozesses betrachten.
A stack trace is the history of various functions called during various function calls when a process is running.
Mit einer Liste von Ereignissen, die in Procmon angezeigt werden, doppelklicken Sie auf ein beliebiges Ereignis und klicken Sie auf die Registerkarte Stack, wie unten gezeigt. Die Registerkarte Stack stellt die Funktionsaufrufe dar, die der einzelne Prozess zum Zeitpunkt des Ereignisses aufgerufen hat.

Das Thema Stack-Traces könnte lange dauern. Wenn Sie mehr über das Verstehen des Aufrufstapels eines Prozesses erfahren möchten, lesen Sie den Artikel Bessere Stack-Traces in Process Monitor erhalten
Ändern der Höhe von Procmons Höhenlage (Erfassen von Ereignissen auf niedrigerer Ebene)
Wie bereits erwähnt, verwendet Procmon einen Filtertreiber, um Ereignisse zu erfassen. Auch wenn es scheinen mag, dass Procmon jedes Windows-Ereignis erfasst (es gibt viele Ereignisse, die im Procmon-Fenster angezeigt werden!), tut es dies nicht. Procmon erfasst nur Ereignisse, von denen sein Filtertreiber weiß oder die Höhe seines Filtertreibers hat.
Wenn Sie beispielsweise die Aktivitäten des Antivirenprogramms, Speicher auf niedriger Ebene und andere Hardwareereignisse auf niedrigerer Ebene protokollieren müssen, müssen Sie die Höhe des PROCMON24-Filtertreibers niedriger als die anderen ändern.
Um dies zu tun:
- Stellen Sie sicher, dass Procmon geschlossen ist.
2. Finden Sie die niedrigste Höhe der aktuell geladenen Filtertreiber mit dem Befehl fltmc
.
3. Ändern Sie den Registrierungswert „Altitude“ unter dem Registrierungsschlüssel HKLM\System\CurrentControlSet\Services\PROCMON24\Instances\Process Monitor 24 Instance auf 100 weniger als den niedrigsten Höhenwert (um alle Ereignisse anzuzeigen).
Je nach installierter Version von Procmon kann sich der Registrierungsschlüssel ändern. Dieses Tutorial verwendet Procmon 2.4.
Sie können eine erhöhte PowerShell-Sitzung öffnen und den folgenden Code-Schnipsel ausführen, um den Wert schnell zu ändern.
Je niedriger Sie die Höhe einstellen, desto mehr Ereignisse müssen Sie verwalten. Legen Sie die Höhe nicht niedriger fest, als Sie benötigen.
4. Verweigern Sie Löschen und Setzen des Werts für Jeder am Schlüssel Process Monitor 24 Instance. Wenn Procmon erneut gestartet wird, wird versucht, den Wert Altitude
auf den Standardwert zurückzusetzen. Sie können diese Berechtigungen über das regedit-Dienstprogramm ändern oder einfach den unten stehenden PowerShell-Schnipsel ausführen.
5. Entladen Sie den PROCMON24-Filtertreiber, indem Sie Windows neu starten.
6. Starten Sie Procmon.
7. Öffnen Sie eine PowerShell-Konsole oder Eingabeaufforderung und führen Sie fltmc filter
aus. Sie sollten nun den Procmon-Filtertreiber bei der neuen Höhe sehen.

Sie können jetzt alles erfassen, was Sie brauchen. Wenn Sie die Altitude
von Procmon auf das niedrigste Niveau senken, seien Sie bereit für den Ereignis-Monsun!
Beispiele aus der realen Welt
Jetzt sollten Sie ein gutes Verständnis dafür haben, was Procmon kann und wie es Ihnen bei der Verfolgung von Windows-Ereignissen helfen kann. Lassen Sie uns dieses Wissen nun anwenden und einige häufige Anwendungsfälle abdecken, in denen Sie dieses Know-how benötigen könnten.
Herausfinden, was eine Datei löscht
Wenn auf Ihrem Windows-Computer eine Datei aus unbekannten Gründen immer wieder gelöscht wird und Sie sie verfolgen möchten, kann Ihnen Procmon dabei helfen (und es ist ziemlich einfach).
Vielleicht haben Sie Procmon geöffnet und versucht, ein Ereignis namens Löschen oder Entfernen der Datei einzustellen, aber zu Ihrem Entsetzen gibt es eine solche Operation nicht. Stattdessen müssen Sie nach Ereignissen filtern, bei denen die Operation
folgendermaßen lautet:
SetDispositionInformationFile
SetDispositionInformationEx
Wenn Ihr System viele Dateien löscht, möchten Sie die Dateilöschungsereignisse auch auf den Dateinamen oder -pfad mit dem Path
-Filter begrenzen.
Verfolgung von Problemen mit gesperrten Dateien
Wir sind alle schon einmal in dieser Situation gewesen: Sie versuchen, eine Datei zu verschieben oder zu löschen, und sie ist von einem anderen Prozess gesperrt. Manchmal wissen Sie nie, ob der zufällige Fehler, den Sie sehen, überhaupt etwas mit einer gesperrten Datei zu tun hat, wenn Sie beispielsweise versuchen, eine Anwendung zu deinstallieren!
Um herauszufinden, wann Windows versucht, eine gesperrte Datei zu löschen oder zu ändern, verwenden Sie den folgenden Filtersatz.
Fehlerbehebung bei Anwendungen, die Administratorrechte erfordern
Arbeiten Sie mit einer Anwendung, die laut Dokumentation funktionieren sollte, aber nicht funktioniert? Wir sind alle schon einmal dort gewesen. Manchmal erfordert ein von der Anwendung gestarteter Prozess erhöhte Rechte, verrät Ihnen jedoch nicht, wo oder wie. Sie können procmon starten, um zu helfen.
Eine Möglichkeit, Prozesse zu ermitteln, die aufgrund erforderlicher erhöhter Berechtigungen verweigert werden, besteht darin, nach dem Ergebnis eines Ereignisses zu filtern.
Immer wenn ein Ereignis auftritt, das aufgrund fehlender erhöhter Rechte verweigert wird, sehen Sie in der Regel ein Ergebnis von ZUGRIFF VERWEIGERT
. Wenn Sie dies wissen, können Sie ganz einfach einen einfachen Filter erstellen, der alle Ereignisse mit einem Ergebnis von ZUGRIFF VERWEIGERT
anzeigt, wie unten gezeigt.
Von hier aus können Sie weitere Filter wie Registry- oder Ordnerpfade mit dem Pfad-Attribut hinzufügen.
Ermitteln des Prozesses, der auf eine IP-Adresse zugreift
Vielleicht haben Sie merkwürdiges Netzwerkverhalten mit Wireshark und müssen herausfinden, welcher Prozess diese Kommunikation initiiert. Starten Sie procon und fügen Sie die folgende Reihe von Filterregeln hinzu.
Diese Filterregeln beschränken Ereignisse auf nur lokal initiierten Netzwerkverkehr mit einem Ziel von einer einzelnen IP-Adresse.
Fehlerbehebung bei langsamem Startvorgang
Manchmal startet Windows langsam. Diese Langsamkeit kann durch viele verschiedene Windows-Komponenten, installierte Anwendungen usw. verursacht werden. Mit der Boot-Protokollierungsfähigkeit von procmon können Sie das Problem ermitteln und beheben.
- Aktivieren Sie das Boot-Logging. Sie können herausfinden, wie Sie dies im Abschnitt „Ereignisse zur Startzeit erfassen“ oben tun können.
2. Öffnen Sie das Dialogfeld „Bootprotokollierung aktivieren“ und stellen Sie sicher, dass das Kontrollkästchen „Ereignisse zur Profilerstellung von Threads generieren“ aktiviert ist. Die Option „Jede Sekunde“ sollte ausreichend sein.

3. Nach einem Neustart öffnen Sie „Procmon“, klicken mit der rechten Maustaste auf eine beliebige Spalte und wählen „Spalten auswählen“.
4. Auf dem Dialogfeld „Auswahl der Spalten für den Process Monitor“ aktivieren Sie „Dauer“. Sobald Sie dies getan haben, können Sie sehen, wie lange jedes Ereignis zur Ausführung benötigt hat.

5. Jetzt können Sie eine Filterregel für „Dauer“ auf eine Anzahl von Sekunden erstellen, die Sie für angemessen halten. Die folgende Filterregel zeigt nur Ereignisse an, die länger als fünf Sekunden gedauert haben.

6. Schließlich ist eine weitere nützliche Möglichkeit, diese langsamen Ereignisse zu untersuchen, die Verwendung des „Prozessbaums“ von „Procmon“. Der „Prozessbaum“ zeigt Beziehungen zwischen Eltern- und Kindprozessen an und enthält die Start- und Endzeit jedes Prozesses. Um ihn zu finden, klicken Sie auf „Werkzeuge“ —> „Prozessbaum“.

7. Wenn Sie im „Prozessbaum“ sind, werfen Sie einen Blick auf die Spalte „Lebensdauer“, die die Dauer jedes Prozesses in grafischer Form anzeigt. Sie können auch Zeitintervalle erkennen, indem Sie die Spalten „Startzeit“ und „Endzeit“ in dieser Ansicht vergleichen.

Fehlerbehebung von App-V-Anwendungen
Viele Organisationen verwenden den Dienst Microsoft App-V, um Anwendungen zu virtualisieren und an Endbenutzer bereitzustellen. Wenn Sie App-V verwenden, gibt es einen praktischen (und undokumentierten) Procmon-Schalter, den Sie kennen sollten, der /externalcapture
genannt wird.
Die Verwendung von .\procmon.exe /ExternalCapture
erfasst in der Regel mehr Registrierungsaktivitäten im Zusammenhang mit App-V-Anwendungen. Probieren Sie diesen Schalter aus, wenn Sie bei der Fehlerbehebung von App-V-Anwendungen nicht finden, wonach Sie suchen!
Der Schalter /HookRegistry soll denselben Zweck wie /ExternalCapture erfüllen, funktioniert jedoch nicht mehr auf 64-Bit-Maschinen.
Zusammenfassung
Da haben Sie es; ein umfangreicher Leitfaden zu allem rund um Procmon! Obwohl Sie viel über Procmon gelernt haben, gibt es immer noch weitere nützliche Funktionen, die Sie entdecken können.
Wenn Sie Vorschläge für Aktualisierungen oder Änderungen an diesem ultimativen Leitfaden haben, kontaktieren Sie mich bitte über Twitter und lassen Sie es mich wissen!