Procmon. L’infâme utilitaire de Windows Sysinternals pour traquer toutes sortes d’activités Windows. Connu pour sa capacité à traquer les installateurs de logiciels malveillants effectuant des changements inconnus dans les clés de registre ou peut-être à inspecter les traces d’un virus.
Si vous devez inspecter le registre Windows, le système de fichiers, les processus ou l’activité réseau et que vous avez décidé d’utiliser Procmon, cet article est pour vous.
Dans ce Guide Ultime, vous allez apprendre tout ce qu’il y a à savoir sur l’utilisation de l’utilitaire Procmon, de l’installation à l’utilisation de base, jusqu’aux différents cas d’utilisation qui vous aideront à traquer toutes sortes d’activités.
Prérequis
Ce Guide Ultime s’appliquera à presque tous les systèmes Windows, mais, pour des raisons d’exhaustivité (et pour vous éviter d’essayer d’exécuter Procmon sur un ordinateur Windows 3.1), vous aurez besoin des éléments suivants :
- A Windows Vista or Windows Server 2008 or higher machine (x86 or x64)
C’est tout ! Vous téléchargerez et installerez Procmon dans les sections suivantes. Le Guide utilisera la version 3.6 de Procmon sur une machine Windows 10 Build 1909 x64.
Téléchargement et exécution de Procmon
Pour commencer, vous devrez exécuter Procmon sur votre machine Windows. Vous pouvez l’obtenir de deux manières différentes : via la méthode de téléchargement traditionnelle ou ce que Windows Sysinternals appelle Sysinternals live.
À l’ancienne
Procmon n’a pas besoin d’être installé ; c’est un exécutable unique. Vous pouvez l’obtenir en téléchargeant le fichier ZIP. Une fois que vous l’avez téléchargé, extrayez le fichier ZIP avec votre outil préféré. Ci-dessous se trouve un extrait de code PowerShell si vous l’avez enregistré dans votre dossier personnel. Cet extrait de code créera un dossier à ~\ProcessMonitor avec tous les fichiers nécessaires.
À l’intérieur du dossier ~\ProcessMonitor, vous verrez cinq fichiers :
- Eula.txt – L’accord de licence que vous devrez accepter avant d’exécuter procmon.
- procmon.chm – Le fichier d’aide contenant toute la documentation fournie.
- Procmon.exe – Le principal fichier EXE qui lancera la bonne instance de procmon (x86 ou x64).
- Procmon64.exe – Le binaire procmon x64.
- Procmon64a.exe – Le binaire procmon alpha 64.
Maintenant, lancez procmon en invoquant le fichier ~\ProcessMonitor\procmon.exe.
Procmon ne fonctionne qu’avec des permissions élevées, donc vous serez invité à les accepter si vous avez l’UAC activé lorsque vous l’exécutez. Il y a un moyen de contourner cela qui sera abordé plus tard dans ce Guide.
Sysinternals Live
Si vous préférez ne pas (ou ne pouvez pas) télécharger un EXE, vous pouvez également utiliser le dossier Sysinternals Live. Pour ce faire, ouvrez l’Explorateur de fichiers et collez \\live.sysinternals.com\tools. Vous verrez alors un dossier comme n’importe quel partage réseau contenant tous les fichiers Sysinternals, y compris procmon.

Faites défiler jusqu’à trouver procmon, double-cliquez et voilà, vous exécutez procmon!
Personnalisation du comportement de démarrage de Procmon
Par défaut, procmon se lance en vous demandant d’accepter un contrat de licence utilisateur final (CLUF) et ouvre également une fenêtre. En utilisant la ligne de commande, vous pouvez personnaliser ce comportement par défaut.
Par exemple, si vous souhaitez lancer procmon réduit en utilisant l’interrupteur /Minimized
.
Peut-être que vous exécutez procmon sur une nouvelle machine et préférez ne pas voir la demande d’acceptation du CLUF. Vous pouvez désactiver cela au démarrage en utilisant l’interrupteur /AcceptEula
.
Bien que moins probable de nos jours, chaque fois que vous lancez procmon, il détecte si vous utilisez un système d’exploitation 64 bits ou 32 bits. Si vous êtes sur une machine 64 bits, il lancera un processus 64 bits et vice versa. Si vous êtes sur une machine 64 bits et que vous souhaitez soit exécuter procmon en tant que processus 32 bits, soit lire un fichier journal (plus tard) généré à partir d’une machine 32 bits, utilisez l’interrupteur /Run32
.
Procmon possède d’autres commutateurs de ligne de commande pour personnaliser le comportement, mais vous en apprendrez davantage dans les sections suivantes.
Introduction à Procmon
Lorsque vous lancez Procmon pour la première fois, vous pourriez être submergé par les options. Ne vous inquiétez pas, vous apprendrez presque tout dans ce guide ! Vous pouvez voir ci-dessous une capture typique de Procmon en cours.

Le moment où vous exécutez Procmon, il commence à capturer différents types d’événements Windows.
Si vous ne voulez pas que Procmon commence automatiquement à capturer des événements, vous pouvez le démarrer à partir de la ligne de commande en exécutant
procmon.exe /NoConnect
.
Comme vous pouvez le voir dans la capture d’écran ci-dessus sous la colonne Opération, il y a diverses icônes représentant chacune différentes classes d’événements Windows. Procmon capture des événements de cinq classes différentes :
- Registre
- Système de fichiers
- Réseau
- Processus
- Événements de profilage
Chaque événement dans toutes les classes est représenté dans une seule liste de sept colonnes :
- Heure de la journée – L’heure à laquelle l’événement s’est produit.
- Nom du processus – Le nom du processus qui a déclenché l’événement.
- PID – L’identifiant du processus.
- Opération – Le type d’événement comme si le processus a ouvert un fichier, changé une valeur de clé de registre, etc.
- Chemin – Le chemin de l’objet avec lequel l’événement a interagi, comme un chemin de fichier, un chemin de registre, etc.
- Résultat – Cette colonne contiendra de nombreuses valeurs pour indiquer le résultat de l’événement. Cette valeur peut être aussi simple que SUCCÈS ou spécifique à l’événement, comme REPARSAGE, DÉPASSEMENT DE MÉMOIRE TAMpon, NOM NON TROUVÉ, etc.
- Détail – Cette colonne contient tous les détails minutieux une fois que vous avez ciblé un événement que vous souhaitez voir.
Si vous préférez ne pas voir une certaine colonne ou si vous souhaitez voir quelles autres colonnes sont disponibles, cliquez avec le bouton droit de la souris sur l’en-tête de n’importe quelle colonne et choisissez Sélectionner des colonnes. Vous serez présenté avec une boîte de dialogue où vous pourrez personnaliser les colonnes visibles.

Dans la fenêtre d’événement, double-cliquez sur un événement. Vous pouvez trouver beaucoup plus de détails sur le processus et l’événement lui-même en consultant les onglets Événement, Processus, et Pile.

Activation et désactivation des captures
Vous avez un contrôle total sur le processus de capture. Vous pouvez soit désactiver l’ensemble du processus de capture, soit désactiver la capture par classe d’événements.
Sur la barre de menu supérieure, vous verrez une icône de loupe (ci-dessous). Si la loupe a une croix rouge dessus, cela signifie que la capture est désactivée. Sinon, la capture est activée.

Ne laissez pas ProcMon capturer des événements plus longtemps que nécessaire. Il utilise la mémoire virtuelle pour stocker tous ces événements et si vous n’êtes pas prudent, vous pourriez finir par faire planter Windows ! Vous pouvez modifier ce comportement, comme vous le verrez un peu plus tard.
Si vous préférez être plus sélectif, vous pouvez également contrôler la capture de chaque classe d’événements. Dans la barre de menu, vous verrez cinq icônes identiques affichées dans la colonne Opération. En cliquant sur ces boutons, vous pouvez activer et désactiver des classes d’événements entières.

Passez votre souris sur chaque icône pour voir quel type d’activité chaque icône représente.
Vous verrez dès que vous cliquez sur une icône, procmon applique un filtre d’événements. Selon le nombre d’événements capturés jusqu’à présent, vous pourriez voir une fenêtre contextuelle comme celle ci-dessous.

Par défaut, l’icône la plus à droite (le graphique noir et vert) n’est pas activée. Si vous souhaitez activer cette classe d’événements lorsque procmon démarre, vous pouvez invoquer procmon à partir de la ligne de commande en utilisant
.\procmon.exe /Profiling
.
Vous pouvez voir le nombre d’événements dans la fenêtre en regardant en bas. Comme vous pouvez le voir ci-dessous, procmon a traité 84 334 événements, mais en raison du filtre d’événements appliqué, il n’affiche que 15 912 d’entre eux, soit 18%. Vous pouvez également voir que ces événements sont stockés dans la mémoire virtuelle (plus d’informations à ce sujet ultérieurement).

Filtres d’événements
Pour comprendre procmon, vous devez sans aucun doute comprendre le concept de filtres d’événements. Les filtres d’événements sont la façon dont vous séparez le signal du bruit. Les filtres d’événements masquent tous les événements qui ne vous intéressent pas. Ci-dessus, vous avez appliqué des filtres d’événements par classes d’événements entières, mais vous pouvez être beaucoup plus granulaire.
Il existe plusieurs façons d’interagir avec les filtres d’événements. Commençons simplement. Cliquez sur l’élément de menu Filtre en haut. Vous verrez de nombreuses options différentes pour travailler avec les filtres.

Visualisation des filtres
Par défaut, Procmon crée un filtre pour vous. Sous l’élément de menu Filtre, cliquez sur Filtrer…. Vous verrez une boîte de dialogue Filtre du moniteur de processus s’afficher avec deux zones ; une pour filtrer vos règles de filtre et une pour afficher toutes les règles que vous avez configurées. Vous pouvez voir un exemple ci-dessous.

Par défaut, Procmon affichera les filtres ci-dessus chaque fois que vous le lancez. Si vous souhaitez masquer cette boîte, vous pouvez le faire en lançant Procmon avec l’interrupteur
/Quiet
.
Vous devriez voir que sans créer vos propres filtres, Procmon utilise également un ensemble de règles de filtre intégrées. Si vous faites défiler la boîte de dialogue Filtre du moniteur de processus, vous verrez de nombreux types de règles différents définis. Ici, vous pouvez voir chaque catégorie, opérateur, valeur et action à prendre sur chaque règle.
Ces filtres sont appliqués car vous n’aurez généralement pas besoin de voir les événements exclus par ces filtres. Mais, si vous souhaitez voir tous les événements, vous pouvez également simplement supprimer tous les filtres par défaut ou cliquer sur Filtre —> Activer la sortie avancée comme indiqué ci-dessous.

Par exemple, vous verrez quelques règles en haut qui indiquent Nom du processus pour la valeur de la colonne Colonne, est pour Relation, divers processus liés à Procmon pour la valeur de la colonne Valeur, et une Action de Exclure. En termes simples, ces règles indiquent à Procmon de ne pas afficher (exclure) un processus portant le nom de procmon.exe, par exemple.
Gestion des règles de filtrage d’événements
En fonction de votre cas d’utilisation, vous devrez sans aucun doute ajouter vos propres règles. Il existe plusieurs façons d’ajouter des règles.
Utilisation de la boîte de filtrage de Process Monitor
Dans la dernière section, vous avez vu à quoi ressemblait la boîte de Filtre de Process Monitor et vous avez affiché toutes les règles. Dans cette boîte, vous pouvez également créer, modifier et supprimer des règles.
Supposons que vous souhaitiez uniquement voir les moments où le processus explorer.exe a interrogé une clé de registre.
Ajout de filtres d’événements
Dans la boîte de Filtre de Process Monitor:
- Cliquez sur la liste déroulante la plus à gauche. Cette liste montre toutes les catégories d’événements sur lesquelles vous pouvez filtrer. Vous pouvez voir ci-dessous qu’il y en a beaucoup !
Chaque élément que vous voyez dans cette liste correspond à une colonne affichée dans l’affichage principal, comme indiqué ci-dessous. Dans le cadre de cet article, choisissez Nom du processus.

2. Choisissez une catégorie, puis choisissez un opérateur. Par défaut, la boîte déroulante sera is, mais vous avez de nombreuses autres options si vous cliquez sur la liste déroulante. Ces opérateurs vous permettent de filtrer de nombreuses façons différentes l’option que vous avez choisie. Puisque vous recherchez un processus exactement explorer.exe, choisissez is.

3. Enfin, choisissez le nom du processus comme indiqué ci-dessous. Vous remarquerez que puisque vous avez choisi Nom du processus comme catégorie, procmon affiche automatiquement tous les processus actuellement en cours d’exécution parmi lesquels vous pouvez choisir.

4. Assurez-vous d’avoir choisi Inclure puisque vous ne voulez voir que les événements correspondant à ce critère. Ensuite, cliquez sur le bouton Ajouter pour ajouter la règle à votre filtre actuel. Vous pouvez voir ci-dessous que la règle Inclure est représentée par une coche verte.
5. Enfin, puisque vous souhaitez tous les événements où explorer.exe interroge une clé de registre, assurez-vous d’inclure également l’opération RegQueryKey. Lorsque vous avez terminé, vous devriez voir les deux règles ajoutées.

6. Cliquez sur OK, et vous verrez alors la fenêtre principale supprimer tous les événements qui ne correspondent pas aux règles de filtre que vous venez de définir.

Suppression des règles de filtre d’événements
Vous pouvez également facilement supprimer et modifier les règles de filtre.
- Cliquez sur l’icône de filtre en haut de la fenêtre principale pour ouvrir la boîte de dialogue Filtre du Moniteur de processus.

2. Mettez en surbrillance les deux règles de filtrage que vous avez créées ci-dessus, cliquez sur le bouton Supprimer comme indiqué ci-dessous, puis cliquez sur OK. Cette action supprimera les deux règles personnalisées ajoutées précédemment.

Vous pouvez également cliquer sur le bouton Réinitialiser pour supprimer automatiquement toutes les règles de filtrage personnalisées.
Chaque fois que vous appliquez un filtre, quittez procmon et redémarrez-le, ce filtre sera appliqué à nouveau. Si vous souhaitez vous assurer qu’aucun filtre n’est appliqué lorsque vous démarrez procmon, vous pouvez invoquer procmon avec l’option
/NoFilter
.
Ajouter des règles de filtrage avec un clic droit
Vous pouvez également ajouter des règles de filtrage via un menu contextuel en faisant un clic droit sur un processus. Comme vous pouvez le voir ci-dessous, vous pouvez créer n’importe quel type de règle directement à partir de ce menu ; pas besoin d’aller dans la zone Filtre du moniteur de processus du tout !

Pour supprimer les règles de filtrage créées via le menu clic droit, vous devrez toujours aller dans la zone Filtre du moniteur de processus pour les supprimer.
Enregistrement et gestion des filtres personnalisés
Si vous êtes un utilisateur avancé de procmon, il arrivera probablement un moment où vous aurez des ensembles de règles de filtrage pour différentes occasions. En utilisant les fonctionnalités de sauvegarde et d’organisation des filtres de procmon, vous pouvez gérer et enregistrer autant de ces ensembles que vous le souhaitez.
Supposons que vous ayez plusieurs filtres personnalisés définis et que vous souhaitez les enregistrer pour les utiliser ultérieurement. Vous pouvez enregistrer ce filtre en allant dans Filtre, en choisissant Enregistrer le filtre et en fournissant un nom comme indiqué ci-dessous.

Une fois que le filtre est enregistré, vous pouvez ensuite aller à Filtre, cliquer sur Organiser les filtres où vous verrez tous les filtres que vous avez enregistrés. À partir de là, vous pouvez cliquer sur un filtre, cliquer sur OK et votre filtre enregistré s’appliquera à la fenêtre actuelle.

Vous pouvez également charger un filtre enregistré en survolant Charger le filtre dans le menu déroulant Filtre et en choisissant votre filtre enregistré dans la liste à droite.

Importation et exportation des filtres
Si vous prévoyez de charger Procmon sur un autre ordinateur et de conserver tous vos filtres enregistrés, vous êtes malheureusement hors de chance. Procmon n’a pas de service cloud pour synchroniser les filtres. Cependant, vous pouvez exporter manuellement les filtres et les importer ultérieurement.
Pour exporter les filtres de Procmon :
- Allez dans la boîte Organiser les filtres.
- Cliquez sur le filtre que vous avez déjà enregistré et que vous souhaitez exporter.
- Cliquez sur le bouton Exporter.
- Indiquez un nom, choisissez un chemin et cliquez sur OK. Vous verrez que tous les filtres de Procmon sont enregistrés avec une extension PMF.
Pour importer les filtres de Procmon :
- Allez dans la boîte Organiser les filtres.
- Cliquez sur le bouton Importer.
- Trouvez le filtre que vous souhaitez importer et cliquez sur OK.
Vous pouvez voir un guide visuel de ces étapes ci-dessous.

Importation et exportation des configurations Procmon.
Comme vous l’avez appris précédemment, vous pouvez exporter et importer des filtres Procmon via des fichiers PMF. Mais les filtres ne sont qu’un composant parmi d’autres d’une instance Procmon. Vous pouvez personnaliser les colonnes, changer l’emplacement de stockage (nous en parlerons plus tard) et bien plus encore. Ne serait-il pas agréable de pouvoir sauvegarder tous ces paramètres ? Eh bien, c’est possible !
Pour sauvegarder l’ensemble de la configuration Procmon, cliquez sur Fichier -> Exporter la configuration, puis choisissez l’emplacement où vous souhaitez enregistrer le fichier PMC (configuration Procmon).

Une fois sauvegardé, vous pouvez fermer Procmon sur le même ordinateur (ou même sur un autre), ouvrir Procmon et cliquer sur Fichier -> Importer la configuration, Procmon appliquera alors tous les mêmes filtres et autres paramètres tels qu’ils ont été exportés.
Vous pouvez également charger des configurations sauvegardées (y compris les filtres) via la ligne de commande en utilisant l’option /LoadConfig suivie du chemin du fichier, par exemple ./procmon.exe /LoadConfig C:\ProcmonConfigs\file_deletion.pmc.
Mise en évidence des événements et conversion en filtres
Peut-être avez-vous besoin de rendre certains événements plus faciles à repérer, mais vous ne souhaitez pas nécessairement les masquer avec un filtre. Dans ce cas, vous pouvez utiliser des mises en évidence. Les mises en évidence vous permettent de créer des ensembles de règles, tout comme les filtres, mais au lieu de masquer les événements, la couleur de fond des événements est modifiée.
Peut-être voyez-vous un processus dans la liste des événements appelé ctfmon.exe que vous souhaitez mettre en évidence dans la liste. Vous pouvez créer une règle de mise en évidence en :
- Cliquant avec le bouton droit sur l’événement dont vous souhaitez mettre en évidence un attribut.
- Cliquez sur Surligner et choisissez un attribut de cet événement à mettre en surbrillance. Dans cet exemple, vous choisiriez Nom du processus. Vous verrez ensuite la couleur de fond changer en bleu clair.
- Une fois la règle de surbrillance créée, vous pouvez accéder à la boîte Mise en surbrillance du moniteur de processus en cliquant sur Filtrer —> Surligner. Vous verrez la règle de surbrillance créée là.
- Depuis la boîte Mise en surbrillance du moniteur de processus, vous pouvez ajouter et supprimer des règles comme avec un filtre.
- Si vous avez créé des règles de surbrillance et souhaitez les transformer en filtre, vous pouvez le faire en cliquant sur le bouton Créer un filtre dans la boîte Mise en surbrillance du moniteur de processus.
Vous pouvez voir un guide visuel de ces étapes ci-dessous.

Exportation et ouverture des événements vers/depuis les fichiers journaux
Pour que Procmon affiche des événements dans une fenêtre, ils doivent être stockés quelque part. Par défaut, les événements sont stockés dans la mémoire virtuelle, plus précisément dans votre fichier de page.

En fonction de la taille du fichier de page que vous avez définie (et de la limite d’engagement système), cela détermine le nombre d’événements que Procmon peut stocker.
Procmon est capable de capturer jusqu’à 199 millions d’événements.
Enregistrement des événements dans un fichier journal
Peut-être avez-vous besoin de sauvegarder ces événements pour une enquête ultérieure ou peut-être les charger sur un autre ordinateur ? Dans ce cas, vous devez enregistrer les événements dans un fichier journal (PML).
Une façon de sauvegarder ces événements utiles est de cliquer sur Fichier —> Enregistrer. Cette action ouvre la boîte de dialogue Enregistrer sous ci-dessous où vous avez plusieurs options.
Événements à enregistrer :
- Tous les événements – Cette option enregistre tous les événements capturés par procmon, indépendamment de l’application d’un filtre d’événements à un fichier.
- Événements affichés en utilisant le filtre actuel – Cette option n’enregistre pas tous les événements capturés, mais seulement ceux qui ont passé les filtres d’événements actuellement actifs.
- Événements surlignés – Cette option n’exporte vers le journal que les événements que vous avez actuellement surlignés.
Format :
- Format natif de Process Monitor (PML) – Le format par défaut pour enregistrer tous les événements (PML).
- Valeurs séparées par des virgules (CSV) – Enregistre tous les événements dans un fichier CSV.
- Langage de balisage extensible (XML) – Enregistre tous les événements dans un fichier XML. Ce format vous permet également d’enregistrer des traces de suivi (plus de détails à ce sujet plus tard) et résoudra les symboles de pile.

Cliquez sur OK et procmon enregistrera tous les événements capturés correspondant à vos critères dans le fichier de votre choix.
Ouverture des journaux d’événements enregistrés.
Vous avez capturé des milliers d’événements sur un ordinateur, enregistré cette session de capture dans un fichier PML et l’avez copié sur un autre ordinateur pour l’examiner. Et maintenant ? Vous devez l’ouvrir.
Vous pouvez ouvrir n’importe quel fichier PML, peu importe si vous l’avez capturé sur votre ordinateur local ou non, en allant simplement dans Fichier -> Ouvrir et en choisissant le fichier PML.
Vous pouvez ouvrir des journaux à partir de la ligne de commande en utilisant l’option /OpenLog, par exemple procmon.exe /OpenLog C:\MonFichierLog.pml.
Enregistrement automatique des événements
Dans la section précédente, vous avez appris comment exporter des événements vers un journal après les avoir capturés. Mais que faire si vous savez à l’avance que vous voulez des événements dans un fichier PML, XML ou CSV ? Vous pouvez demander à procmon de capturer automatiquement des événements dans l’un de ces formats de fichier journal.
De plus, stocker les événements dans le fichier de pagination est acceptable si vous effectuez une session de dépannage ad hoc simple qui dure moins d’une heure. Cette méthode présente cependant quelques inconvénients.
- À chaque fois que vous fermez procmon, les événements sont perdus.
- Comme mentionné précédemment, la taille de votre fichier de pagination peut devenir trop importante.
Lorsque vous utilisez la mémoire virtuelle comme emplacement de stockage, vous pouvez découvrir combien d’espace il reste à procmon en cliquant sur Fichier -> Fichiers de support.
Que faire ? Changer l’emplacement de stockage.
Stockage des événements sur le disque
Vous pouvez changer l’emplacement où procmon stocke les événements, de votre fichier de pagination vers le disque, en suivant les étapes suivantes :
- Arrêtez une capture si vous en exécutez une actuellement.
2. Cliquez sur Fichier → Fichiers de sauvegarde. Vous verrez ensuite un résumé des événements stockés et leur taille ainsi qu’une option pour changer l’emplacement de stockage.

3. Pour changer l’emplacement de stockage vers un fichier, cliquez sur le champ Utiliser le fichier nommé:, cliquez sur le bouton des points de suspension et définissez un emplacement de fichier.
Essayez d’utiliser un volume de disque différent de celui sur lequel procmon s’exécute pour de meilleures performances.
Vous pouvez forcer procmon à utiliser un fichier comme emplacement de stockage en le lançant également depuis la ligne de commande et en utilisant l’option
/BackingFile
. Si vous souhaitez revenir à l’utilisation du fichier de pagination, utilisez l’option/PagingFile
.
Conversion des fichiers journaux
Procmon peut enregistrer des fichiers journaux dans trois formats différents : PML, CSV et XML. Peut-être avez-vous enregistré un fichier journal au format PML et avez-vous besoin d’analyser les événements avec un script ou un autre outil. Dans ce cas, vous pouvez convertir ce fichier journal PML en XML ou CSV en ligne de commande.
Disons que vous avez un fichier journal PML à l’emplacement C:\capture.pml. Vous souhaitez convertir ce fichier journal en XML et un en format CSV. Vous pouvez le faire en ouvrant d’abord le fichier journal avec l’option /OpenLog
et ensuite en utilisant une option /Save*
pour le sauvegarder.
Procmon a un paramètre standard /SaveAs
qui vous permet de sauvegarder un journal dans l’un des trois formats mentionnés précédemment. Le paramètre /SaveAs
définira le format de fichier en fonction de l’extension de fichier que vous fournissez.
Voici quelques exemples :
Convertir le journal capture.pml en capture.xml:
Convertir le journal capture.pml en capture.csv:
Rappelez-vous les options de trace de pile et de résolution de symbole dans la boîte de dialogue Enregistrer dans un fichier ci-dessus ? Vous pouvez également activer ces options en utilisant /EnregistrerSous1
et /EnregistrerSous2
.
Vous ne pouvez enregistrer les traces de pile et les informations sur les symboles qu’au format XML.
Convertir le journal capture.pml en capture.xml incluant les informations sur la pile :
Convertir le journal capture.pml en capture.xml incluant les informations sur la pile avec les symboles :
Sachez que l’ajout de traces de pile et de symboles augmentera considérablement le temps de conversion et vous verrez inévitablement un indicateur de progression comme indiqué ci-dessous.

Capture des événements au démarrage
Parfois, les informations dont vous avez besoin pour enquêter ne sont pas générées lorsque Windows est en cours d’exécution. Vous pourriez également avoir besoin d’investiguer ce qu’un processus fait chaque fois que Windows démarre.
Il est courant d’avoir besoin de résoudre des problèmes tels que les performances de démarrage lentes ou peut-être un logiciel malveillant qui décide de s’exécuter immédiatement au démarrage de Windows. Procmon dispose d’une fonctionnalité appelée Enregistrement au démarrage que vous pouvez activer pour capturer ces informations.
Pour activer l’enregistrement au démarrage, cliquez sur Options —> Activer l’enregistrement au démarrage dans le menu comme indiqué ci-dessous.

Une fois que vous cliquez sur Activer l’enregistrement au démarrage, une boîte de dialogue apparaîtra vous demandant des informations facultatives. Cette boîte de dialogue est l’endroit où vous pouvez capturer des événements de profilage de thread.
Activer les événements de profilage des threads est un cas d’utilisation avancé. Lorsque vous activez le profilage des threads, procmon capture des traces de pile de threads et une utilisation du processeur que vous pouvez utiliser pour identifier la source des problèmes de performance liés au processeur.

Une fois que vous avez cliqué sur OK, procmon activera le journal de démarrage, ce qui indique au pilote de filtre (plus d’informations à ce sujet plus tard) d’attendre le prochain redémarrage de Windows. Lorsque vous redémarrez Windows, procmon commencera alors à capturer les événements de processus comme si vous l’aviez lancé manuellement.
Toutes les données d’événements au démarrage sont stockées dans un fichier journal temporaire appelé C:\Windows\procmon.pmb.
Une fois que Windows est de nouveau opérationnel, ouvrez à nouveau procmon. Vous devriez voir une boîte de dialogue comme ci-dessous. Ici, cliquez sur Oui pour convertir les données au démarrage au format PML en sélectionnant ensuite le fichier journal pour enregistrer les données.

Alors que procmon convertit les données, vous verrez une barre de progression comme ci-dessous.

N’oubliez pas de relancer procmon après un redémarrage ! Procmon commencera à capturer des événements dès que Windows démarrera dans C:\Windows\procmon.pmb. Il continuera à le faire jusqu’à ce que vous le désactiviez en ouvrant à nouveau procmon.
Exécution de Procmon à distance
Bien que procmon ne s’exécute que localement sur une machine Windows, vous pouvez appeler procmon pour s’exécuter à distance via psexec ou la commande Invoke-Command
de PowerShell.
Connexe: PsExec: Le Guide Ultime, Invoke-Command: La Meilleure Façon d’Exécuter du Code à Distance
Pour exécuter procmon avec la commande Invoke-Command
de PowerShell, suivez les étapes suivantes :
- Activez PowerShell Remoting sur la machine distante si ce n’est pas déjà fait.
2. Copiez le dossier procmon vers l’ordinateur distant via la console PowerShell.
3. Appelez procmon via PowerShell en vous assurant de sauter la confirmation de l’EULA et de forcer procmon à stocker les événements dans un fichier de sauvegarde plutôt que dans la mémoire virtuelle, et ne demandez pas le filtre au démarrage.
4. À ce stade, procmon a commencé la capture. Reproduisez le problème que vous essayez de capturer.
5. Arrêtez procmon sur l’ordinateur distant en utilisant l’option /Terminate.
6. Attendez que procmon se ferme. En raccourci, vous pouvez vérifier périodiquement le processus procmon et retourner le contrôle à la console PowerShell une fois qu’il est terminé.
7. Copiez le fichier journal distant sur l’ordinateur local
À ce stade, vous avez le fichier journal exécuté à distance sur votre ordinateur local !
Si vous souhaitez un script PowerShell approprié pour gérer cette capture, vous pouvez le trouver ci-dessous.
Configuration des captures procmon de longue durée
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.
Filtrer les événements
Lorsque procmon effectue une capture, il enregistre tous les événements. Vous pouvez créer et appliquer des filtres d’événements, mais ces filtres cachent simplement les événements à l’écran ; ils n’empêchent pas procmon de les capturer.
Si vous avez l’intention d’effectuer des captures Procmon plus longues, il est toujours une bonne idée de choisir Drop Filtered Events dans le menu Filter comme indiqué ci-dessous.

Une fois que vous sélectionnez l’élément Drop Filtered Events, Procmon commence immédiatement à supprimer tous les événements filtrés. Procmon ne les affiche pas à l’écran et ne les enregistre pas dans la mémoire virtuelle ou un fichier journal. Supprimer entièrement les événements indésirables aide à économiser des ressources.
Thèmes Avancés
Vous cherchez toujours plus d’informations sur Procmon et comment l’utiliser ? Plongeons dans quelques sujets avancés ! Ces sujets sont ceux que vous n’aurez probablement pas besoin de connaître trop souvent. Ils concernent davantage les fonctionnalités de Procmon sous le capot, mais ces informations peuvent être utiles lors du dépannage de Procmon.
Pilotes de Filtre
Pour capturer des événements, Procmon enregistre et utilise un pilote de filtre via le Windows Filter Manager (FltDrv). Ce pilote de filtre appelé PROCMON24 s’installe lorsque vous démarrez une capture. Parfois, ce pilote de filtre peut entrer en conflit avec d’autres applications.
Après avoir démarré Procmon, ouvrez une console PowerShell ou une invite de commande élevée et exécutez fltmc filters
. L’utilitaire fltmc
répertorie, charge et décharge les pilotes de filtre. Lorsque vous exécutez cela, vous verrez le filtre PROCMON24 chargé comme indiqué ci-dessous.
Remarquez que l’Altitude de PROCMON24 est 385200 par défaut, avec d’autres filtres ayant un nombre inférieur. L’altitude du pilote de filtre représente le niveau auquel un pilote de filtre peut « voir » les événements. Par exemple, si un événement se produit au niveau wcifs, luafv ou Wof, procmon ne pourra pas le voir. Nous en parlerons plus tard pour changer cela.

Le pilote de filtre PROCMON24 reste chargé même lorsque procmon n’est pas en cours d’exécution.
Parfois, procmon peut rencontrer des problèmes lors du chargement d’un pilote de filtre. Pour résoudre ce problème, ouvrez procmon avec l’option
/NoConnection
pour empêcher procmon de se connecter au pilote de filtre.
Déchargement du pilote de filtre PROCMON24
Il existe des cas où le pilote de filtre PROCMON24 peut entrer en conflit avec différents périphériques matériels et vous devrez le décharger. Cependant, cette situation peut ne pas être aussi facile qu’elle en a l’air.
Vous pouvez décharger des pilotes de filtre en utilisant la commande fltmc unload
suivie du nom du pilote de filtre.
Mais si vous essayez la commande ci-dessus, vous vous rendrez rapidement compte qu’elle ne fonctionne pas. Vous ne pouvez pas décharger ce pilote de filtre car apparemment le développeur n’a pas ajouté cette fonctionnalité.

Si vous devez décharger le pilote de filtre PROCMON24, malheureusement, redémarrer est la seule façon de le faire.
Traces de la pile.
Parfois, des événements simples comme la lecture d’une clé de registre, l’ouverture d’un fichier ou l’appel d’une adresse réseau ne sont pas suffisamment profonds. Vous devez creuser davantage et voir l’historique des appels de fonction réels de l’API Windows qu’un processus effectue. Vous devez examiner la pile d’appels.
A stack trace is the history of various functions called during various function calls when a process is running.
Avec une liste d’événements apparaissant dans procmon, double-cliquez sur n’importe quel événement et cliquez sur l’onglet Pile comme indiqué ci-dessous. L’onglet Pile représente les appels de fonction que le processus individuel a effectués au moment où l’événement s’est produit.

Le sujet des traces de pile pourrait être développé pendant longtemps. Si vous souhaitez en savoir plus sur la compréhension de la pile d’appels d’un processus, consultez l’article Obtenir de meilleures traces de pile dans Process Monitor
Changer l’altitude de Procmon (Capturer des événements de niveau inférieur)
Comme mentionné précédemment, Procmon utilise un pilote de filtre pour capturer des événements. Même s’il peut sembler que Procmon capture chaque événement Windows (il y a beaucoup d’événements qui apparaissent dans la fenêtre Procmon !), ce n’est pas le cas. Procmon ne capture que les événements connus de son pilote de filtre ou l’altitude à laquelle se trouve son pilote de filtre.
Par exemple, si vous devez journaliser l’activité de l’antivirus, le stockage de bas niveau et d’autres événements matériels de niveau inférieur, vous devez modifier l’altitude du pilote de filtre PROCMON24 pour qu’elle soit inférieure à celle des autres.
Pour ce faire :
- Assurez-vous que Procmon est fermé.
2. Trouvez l’altitude la plus basse des pilotes de filtre actuellement chargés avec la commande fltmc
.
3. Modifiez la valeur de l’altitude dans le registre sous la clé de registre HKLM\System\CurrentControlSet\Services\PROCMON24\Instances\Process Monitor 24 Instance pour 100 de moins que la valeur d’altitude la plus basse (pour voir tous les événements).
En fonction de la version de Procmon que vous avez installée, l’emplacement de la clé de registre peut changer. Ce tutoriel utilise Procmon 2.4.
Vous pouvez ouvrir une session PowerShell élevée et exécuter le fragment de code ci-dessous pour modifier rapidement la valeur.
Plus vous réglez l’altitude basse, plus vous aurez d’événements à gérer. Ne réglez pas l’altitude plus bas que ce dont vous avez besoin.
4. Refusez les droits de Supprimer et Définir la valeur pour Tout le monde sur la clé Process Monitor 24 Instance. Lorsque Procmon s’exécute à nouveau, il tentera de réinitialiser la valeur de Altitude
à sa valeur par défaut. Vous pouvez modifier ces autorisations via l’utilitaire regedit ou simplement exécuter le fragment de code PowerShell ci-dessous.
5. Déchargez le pilote de filtre PROCMON24 en redémarrant Windows.
6. Démarrez Procmon.
7. Ouvrez une console PowerShell ou une invite de commandes et exécutez fltmc filters
. Vous devriez maintenant voir le pilote de filtre Procmon à la nouvelle altitude.

Vous pouvez désormais capturer tout ce dont vous avez besoin. Si vous abaissez l’altitude de Altitude
de procmon au minimum possible, soyez prêt pour l’événement mousson !
Exemples concrets
Vous devriez maintenant avoir une bonne compréhension de ce que procmon peut faire et comment il peut vous aider à suivre les événements de Windows. Appliquons maintenant ces connaissances et examinons quelques cas d’utilisation courants où vous pourriez avoir besoin de ce genre de savoir-faire.
Trouver ce qui supprime un fichier
Si un fichier de votre machine Windows continue d’être supprimé pour une raison inconnue et que vous souhaitez le localiser, procmon peut vous aider (et c’est assez facile).
Peut-être avez-vous ouvert procmon et avez essayé de définir un événement de fichier appelé Delete ou Remove, mais à votre grand désarroi, aucune telle opération n’existe. Pour trouver les événements de suppression de fichiers, vous devez filtrer les événements avec une Operation
de :
SetDispositionInformationFile
SetDispositionInformationEx
Si votre système supprime beaucoup de fichiers, vous voudrez également limiter les événements de suppression de fichiers au nom ou au chemin du fichier en utilisant le filtre Path
.
Localisation des problèmes de fichiers verrouillés
Nous avons tous été là ; vous essayez de déplacer ou de supprimer un fichier et il est verrouillé par un autre processus. Parfois, si vous essayez de désinstaller une application, par exemple, vous ne saurez jamais si cette erreur aléatoire que vous voyez a quelque chose à voir avec un fichier verrouillé en premier lieu !
Pour savoir quand Windows tente de supprimer ou de modifier un fichier verrouillé, utilisez l’ensemble de filtres ci-dessous.
Dépannage des applications nécessitant des droits d’administrateur
Travaillez-vous avec une application qui, selon la documentation, devrait fonctionner mais ne fonctionne pas ? Nous avons tous déjà été confrontés à cette situation. Parfois, un processus invoqué par l’application nécessite des privilèges élevés mais ne vous indique pas où ni comment. Vous pouvez utiliser procmon pour vous aider.
Une façon de repérer les processus refusés en raison des privilèges élevés requis est de filtrer sur le Résultat d’un événement.
Chaque fois qu’un événement est refusé en raison du manque de droits élevés, vous verrez généralement un résultat de ACCÈS REFUSÉ
. Sachant cela, vous pouvez facilement créer un filtre simple affichant tous les événements ayant un Résultat de ACCÈS REFUSÉ
comme indiqué ci-dessous.
À partir de là, vous pouvez ajouter d’autres filtres comme le chemin du registre ou du dossier avec l’attribut Chemin.
Trouver le processus accédant à une adresse IP
Peut-être avez-vous un comportement réseau étrange avec Wireshark et avez besoin de savoir quel processus initie cette communication. Lancez procon et ajoutez le jeu de filtres suivant.
Ces filtres permettent de limiter les événements au trafic réseau initié localement avec une seule adresse IP de destination.
Dépannage du démarrage lent
Parfois, Windows met du temps à démarrer. Cette lenteur peut être causée par de nombreux composants Windows, des applications installées, etc. En utilisant la fonctionnalité d’enregistrement de démarrage de procmon, vous pouvez identifier et résoudre le problème.
- Activer l’enregistrement au démarrage. Vous pouvez découvrir comment faire cela dans la section Capture des événements au démarrage ci-dessus.
2. Sur la boîte de dialogue Activer l’enregistrement au démarrage, assurez-vous de cocher la case Générer des événements de profilage des threads. Le bouton radio Chaque seconde devrait être suffisant.

3. Après un redémarrage, ouvrez Procmon, faites un clic droit sur n’importe quelle colonne et choisissez Sélectionner des colonnes.
4. Sur la boîte de dialogue Sélection des colonnes de Process Monitor, cochez Durée. Une fois cela fait, vous pourrez voir combien de temps chaque événement a pris pour s’exécuter.

5. Maintenant, vous pouvez créer une règle de filtre sur Durée pour un certain nombre de secondes que vous estimez être adéquat. La règle de filtre ci-dessous ne montrera que les événements qui ont pris plus de cinq secondes à se terminer.

6. Enfin, une autre façon utile d’investiguer ces événements lents est d’utiliser l’outil Arborescence des processus de Procmon. L’arborescence des processus montre les relations entre les processus parent et enfant et contient l’heure de début et de fin de chaque processus. Pour le trouver, cliquez sur Outils —> Arborescence des processus.

7. Une fois dans l’outil Arborescence des processus, examinez la colonne Durée de vie qui montre graphiquement la durée de chaque processus. Vous pouvez également remarquer les plages horaires en comparant les colonnes Heure de début et Heure de fin dans cette vue.

Résolution des problèmes des applications App-V
De nombreuses organisations utilisent le service Microsoft App-V pour virtualiser et déployer des applications auprès des utilisateurs finaux. Si vous utilisez App-V, il existe un commutateur pratique (et non documenté) que vous devez connaître appelé /externalcapture
.
L’utilisation de .\procmon.exe /ExternalCapture
permet généralement de capturer plus d’activités de registre autour des applications App-V. Essayez ce commutateur si vous ne parvenez pas à trouver ce que vous cherchez lors du dépannage des applications App-V!
Le commutateur /HookRegistry est censé servir le même objectif que /ExternalCapture, mais il ne fonctionne plus sur les machines 64 bits.
Conclusion
Eh bien, voilà; un guide complet sur tout procmon! Bien que vous ayez beaucoup appris sur procmon, il y a toujours plus de trésors à découvrir avec cet utilitaire pratique.
Si vous souhaitez suggérer des mises à jour ou des modifications à ce Guide Ultime, veuillez me contacter sur Twitter et faites-le moi savoir!