Der ultimative Leitfaden für Procmon

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.

Expand-Archive -Path '~\ProcessMonitor.zip' -Destination ProcessMonitor

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.

Sysinternals Live

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.

.\procmon.exe /Minimized

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.

.\procmon.exe /AcceptEula

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.exe /Run32

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.

Default Procmon process view

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.

Customizing procmon columns

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.

Procmon event properties window

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.

Procmon actively capturing events

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.

Types of Windows events

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.

Types of Windows events

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).

Number of Events in the Window

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 menu options

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.

Filter rules

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.

Enable Advanced Output

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:

  1. 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.

Process Monitor Filter

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.

Operator List

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.

Process Name in Process Monitor Filter

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.

RegQueryKey

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

Events that do not match the filter rules

Entfernen von Ereignisfilterregeln

Sie können auch genauso einfach Filterregeln entfernen und ändern.

  1. Klicken Sie oben im Hauptfenster auf das Filter-Symbol, um das Process Monitor Filter-Fenster zu öffnen.
Process Monitor Filter Box

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.

remove both of the custom rules added

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!

add filter rules via a right-click menu

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.

Saving a filter

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.

Viewing and loading filters

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.

Loading a filter

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:

  1. Gehen Sie zum Feld Filter organisieren.
  2. Klicken Sie auf den Filter, den Sie bereits gespeichert haben und exportieren möchten.
  3. Klicken Sie auf die Schaltfläche Exportieren.
  4. 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:

  1. Gehen Sie zum Feld Filter organisieren.
  2. Klicken Sie auf die Schaltfläche Importieren.
  3. Finden Sie den Filter, den Sie importieren möchten, und klicken Sie auf OK.

Sie können unten eine visuelle Anleitung dieser Schritte sehen.

import procmon filters

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.

Export Configuration

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:

  1. Rechtsklicken Sie auf das Ereignis, dessen Attribut Sie hervorheben möchten.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

Highlighting Events and Converting to Filters

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.

events are stored in virtual memory

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.
Events

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.

  1. Wenn Sie procmon schließen, sind die Ereignisse verschwunden.
  2. 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:

  1. 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.

Process Monitor Backing Files

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:

procmon.exe /OpenLog C:\capture.pml /SaveAs C:\capture.xml

Konvertieren Sie das Protokoll capture.pml in capture.csv:

procmon.exe /OpenLog C:\capture.pml /SaveAs C:\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:

procmon.exe /OpenLog C:\capture.pml /SaveAs1 C:\capture.xml

Konvertieren Sie das Protokoll capture.pml in capture.xml, einschließlich Stack-Informationen mit Symbolen:

procmon.exe /OpenLog C:\capture.pml /SaveAs2 C:\capture.xml

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.

Progress Indicator

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.

Enabling boot logging

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.

Optional thread-profiling events for boot time logging

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.

Confirmation to convert boot-time events to PML

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

Converting boot-time event data to PML

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:

  1. Aktiviere PowerShell Remoting auf dem entfernten Rechner, falls noch nicht aktiviert.

2. Kopiere den Procmon-Ordner über die PowerShell-Konsole auf den Remote-Computer.

Copy-Item -Path C:\procmon \\MYPC\c$

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.

Invoke-Command -Computer MYPC -ScriptBlock { C:\procmon\procmon.exe /AcceptEula /BackingFile C:\capture.pml /Quiet }

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.

Invoke-Command -Computer MYPC -ScriptBlock { C:\procmon\procmon.exe /Terminate }

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.

while (Invoke-Command -Computer MYPC -ScriptBlock { Get-Process procmon -ErrorAction Ignore }) {
     Write-Host "Waiting on procmon to exit…"
     Start-Sleep -Seconds 5
 }

7. Kopiere die entfernte Protokolldatei auf den lokalen Computer.

$session = New-PSSession -ComputerName MYPC
Copy-Item -Path C:\log.pml -Destination C:\ -FromSesson $session
$session | Remove-PSSession

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.

[CmdletBinding()]
 param(
     [Parameter()]
     [string]$ComputerName, 
     [Parameter()]
     [string]$LogFilePath = 'C:\capture.pml'
 )
 $procmonFolderPath = 'C:\procmon'
 try {
     $session = New-PSSession -ComputerName $ComputerName
     Copy-Item -Path $procmonFolderPath -Destination $procmonFolderPath -ToSession $session $scriptBlock = {
         & "$using:procmonFolderPath\procmon.exe" /AcceptEula /BackingFile $using:LogFilePath /Quiet
         & "$using:procmonFolderPath\procmon.exe" /Terminate
         while (Get-Process procmon -ErrorAction Ignore) {
             Write-Host "Waiting on procmon to exit…"
             Start-Sleep -Seconds 5
         }
     }
     Copy-Item -Path $LogFilePath -Destination C:\ -FromSesson $session
 } catch {
     throw $_
 } finally {
     $session | Remove-PSSession
 }

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.

Drop Filtered Events

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.

Procmon 24

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.

fltmc unload PROCMON24

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.

Can’t Unload the Filter

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.

Stack Tab

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:

  1. Stellen Sie sicher, dass Procmon geschlossen ist.

2. Finden Sie die niedrigste Höhe der aktuell geladenen Filtertreiber mit dem Befehl fltmc.

fltmc filter

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.

Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\PROCMON24\Instances\Process Monitor 24 Instance' -Name 'Altitude' -Value 40400

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.

$regKeyPath = 'HKLM:\System\CurrentControlSet\Services\PROCMON24\Instances\Process Monitor 24 Instance'
$acl = Get-Acl $regKeyPath
$idRef = System.Security.Principal.NTAccount
$regRights = @([System.Security.AccessControl.RegistryRights]::Delete,[System.Security.AccessControl.RegistryRights]::SetValue) 
$inhFlags = [System.Security.AccessControl.InheritanceFlags]::None
$prFlags = [System.Security.AccessControl.PropagationFlags]::None
$acType = [System.Security.AccessControl.AccessControlType]::Deny
$rule = New-Object System.Security.AccessControl.RegistryAccessRule ($idRef, $regRights, $inhFlags, $prFlags, $acType) 
$acl.SetAccessRule($rule) $acl | Set-Acl -Path $regKeyPath

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.

PowerShell console or command prompt

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.

Operation is          SetDispositionInformationEx   Include
Operation is          SetDispositionInformationFile Include
Path      begins with C:\MyFolder                   Include

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.

Operation is CreateFile        Include
Result    is SHARING VIOLATION Include

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.

Result is ACCESS DENIED Include

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.

Operation   is       TCP Send        Include
Operation   is       UDP Send        Include
Path        contains ->  Include
Event Class is       Network         Include

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.

  1. 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.

Enabling thread profiling events on boot

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.

Process Monitor Column

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.

filter rule on Duration

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“.

Process Tree

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.

Lifetime Column

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!

Source:
https://adamtheautomator.com/procmon/