tuto windows Quel utilisateur a installe ou desinstalle un logiciel
  • 10 octobre 2025
  • ComputaSYS
  • 0


I. Présentation

Sur une machine Windows, comment savoir quel est l’utilisateur à l’origine de l’installation ou de la désinstallation d’un logiciel ? La réponse se situe dans l’Observateur d’événements du système. Ce tutoriel explique comment obtenir cette information rapidement.

Par défaut, Windows dispose d’un mécanisme pour tracer de nombreuses actions, y compris les installations et désinstallations de logiciels. Bien que ce soit une action réservée, en principe, aux administrateurs et à un nombre limités de personnes, il peut s’avérer utile d’être capable de rechercher des informations à ce sujet.

À ce titre, ce tutoriel explique comment récupérer l’information à partir de l’Observateur d’événements ou via PowerShell.

II. Actions sur les logiciels : les événements à suivre

Lorsque des applications classiques sont installées ou supprimées à l’aide d’un installeur MSI sur Windows (même certains EXE peuvent utiliser un MSI packagé), le système enregistre automatiquement des événements dans le journal “Application” de l’Observateur d’événements. Ces événements sont générés par le service MsiInstaller. On peut les retrouver via ces ID :

IDDescription1033Début d’installation avec Windows Installer1034Fin d’installation avec Windows Installer11707Installation réussie d’un logiciel MSI11724Désinstallation réussie d’un logiciel MSI1040Début de la réparation d’un logiciel MSI1042Fin de la réparation d’un logiciel MSI11708Échec d’installation d’un logiciel MSI11725Échec de désinstallation d’un logiciel MSI

En règle générale, ces deux événements permettent de bien tracer les installations et désinstallations :

Mais, vous pouvez étendre vos recherches si nécessaire en vous référant au tableau ci-dessus. Par exemple, un événement avec l’ID 11708 peut être déclenché si un utilisateur tente d’installer un logiciel alors qu’il n’a pas suffisamment de privilèges.

En complément, la traçabilité des opérations liées aux packages Appx (applications du Microsoft Store, notamment), est effectuée via ces deux journaux :

Journaux des applications et des services > Microsoft > Windows > AppXDeployment > Operational

Journaux des applications et des services > Microsoft > Windows > AppXDeploymentServer > Opérationnel

III. Utilisation de l’Observateur d’événements

Désormais, nous allons voir comment récupérer les événements correspondant à notre recherche, en ciblant les ID 11707 et 11724.

Commencez par ouvrir l’Observateur d’événements sur votre machine. Vous pouvez le rechercher dans le menu Démarrer ou appuyer sur Win + R et taper eventvwr.msc, puis validez. Ensuite, dans le panneau de gauche, développez : Journaux Windows > Application.

Effectuez un clic droit sur le nom du journal et cliquez sur “Filtrer le journal actuel…”. Une fenêtre apparaît. Renseignez les identifiants d’événements suivants dans le champ ID de l’événement : 11707,11724. Il est impossible d’en préciser d’autres, le tout étant de séparer les ID par une virgule. Cliquez sur OK pour valider.

Remarque : dans le filtre, il peut s’avérer utile de rajouter “MsiInstaller” comme source d’événement. Ceci affine la recherche si vous utilisez d’autres ID.

Vous verrez alors apparaître les événements liés aux installations et désinstallations via MSI. Voici un exemple :

Cet exemple met en évidence l’installation d’une application :

Produit : Advanced IP Scanner 2.5.1 — Installation effectuée.

L’occasion d’obtenir plusieurs informations intéressantes :

Le nom du logiciel concerné

Le résultat de l’opération (succès ou échec)

Le nom de l’utilisateur ayant déclenché l’action (champ “Utilisateur”)

La date et l’heure à laquelle l’événement s’est produit

L’exemple ci-dessus montre que je suis parvenu à retrouver une installation effectuée il y a plusieurs mois. En réalité, cet historique dépend de l’activité de votre machine : la rotation des journaux dépend de la quantité d’événements générés et elle dépend aussi de la taille limite du journal. Pour avoir un historique plus important, il est de toute façon recommandé de centraliser les logs de ses machines.

IV. Utilisation de PowerShell

Pour automatiser ou affiner cette recherche, PowerShell peut s’avérer plus efficace que l’interface graphique. Comme souvent, me direz-vous.

Grâce au cmdlet Get-WinEvent, vous pouvez effectuer une recherche dans les événements avec PowerShell. Avec ce cmdlet, il est préférable d’utiliser une hash table pour définir notre filtre, à savoir ici : le journal Application, les ID 11707 et 11724, et la source MsiInstaller. Ce filtre doit être déclaré via le paramètre -FilterHashTable et dans cet exemple, il sera associé à la variable $EventFilter. Nous utiliserons aussi une autre variable pour préciser le nom du logiciel à rechercher.

$EventFilter = @{
LogName = “Application”
ID = 11707, 11724
ProviderName = “MsiInstaller”
}

$EventSoftwareName = “GLPI”

Get-WinEvent -FilterHashtable $EventFilter | Where-Object { $_.Message -like “*$EventSoftwareName*” } | Select-Object TimeCreated, UserId, Message

Cette commande retourne : la date et l’heure d’événements, le SID de l’utilisateur et le message.

TimeCreated UserId Message
———– —— ——-
14/04/2025 16:21:08 S-1-5-21-1020576549-249575117-3603561714-1001 Product: GLPI Agent 1.5 — Installation completed successfully.

14/04/2025 16:15:52 S-1-5-21-1020576549-249575117-3603561714-1001 Product: GLPI Agent 1.13 — Removal completed successfully.

14/04/2025 16:17:46 S-1-5-21-1020576549-249575117-3603561714-1001 Product: GLPI Agent 1.13 — Installation completed successfully.

C’est un bon début, mais le SID n’est pas une valeur facilement interprétable. Pour améliorer la sortie, on va tenter de résoudre le SID automatiquement afin d’afficher le nom de l’utilisateur à la place de son identifiant de sécurité. Pour cela, une propriété calculée sera utilisée dans notre bout de code PowerShell.

Ce qui donne :

$EventFilter = @{
LogName = “Application”
ID = 11707, 11724
ProviderName = “MsiInstaller”
}

$EventSoftwareName = “GLPI”
Get-WinEvent -FilterHashtable $EventFilter | Where-Object { $_.Message -like “*$EventSoftwareName*” } | Select-Object TimeCreated, @{Name=’Utilisateur’; Expression={
try {
(New-Object System.Security.Principal.SecurityIdentifier($_.UserId)).Translate([System.Security.Principal.NTAccount]).Value
} catch {
“SID non résolu”
}
}}, Message

Cette fois-ci, la sortie est plus parlante :

TimeCreated Utilisateur Message
———– ———– ——-
14/04/2025 16:21:08 W11-01\Florian Product: GLPI Agent 1.5 — Installation completed successfully.

14/04/2025 16:15:52 W11-01\Florian Product: GLPI Agent 1.13 — Removal completed successfully.

14/04/2025 16:17:46 W11-01\Florian Product: GLPI Agent 1.13 — Installation completed successfully.

V. Le Moniteur de fiabilité : une autre source d’information

Le Moniteur de fiabilité, accessible via le Panneau de configuration (ou via le raccourci perfmon /rel), représente une autre source d’informations exploitable pour suivre les installations/désinstallations de logiciels. Il donne aussi des informations sur l’installation des mises à jour.

Sur Windows, le Moniteur de fiabilité est un outil graphique qui fournit une vue chronologique de la stabilité du système et des événements qui l’affectent, comme les erreurs système, les installations de mises à jour ou de logiciels. Même si son historique est limité à 1 mois, il peut être utile si vous recherchez des informations sur un événement récent.

Dans la vue chronologique, chaque événement qui mérite une attention est précisé avec un icône. L’exemple ci-dessous montre bien qu’il a tracé l’installation d’un logiciel.

VI. Conclusion

Que ce soit à des fins de diagnostic, d’audit ou de traçabilité, Windows permet d’identifier l’utilisateur à l’origine d’une installation ou suppression de logiciel à travers les journaux d’événements. En combinant l’utilisation de l’Observateur d’événements et de PowerShell, on arrive à obtenir des informations précises sur ce type d’actions. Par ailleurs, les installations de logiciels peuvent aussi être détectées directement par les solutions d’inventaire.

Pour aller plus loin dans la journalisation des événements sur Windows, je vous recommande de déployer Sysmon.

Ingénieur système et réseau, cofondateur d’IT-Connect et Microsoft MVP “Cloud and Datacenter Management”. Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.



Source link

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *