Un utilitaire innovant pour détecter les restes de logiciels désinstallés sur Windows.
- Détecte les restes de logiciels désinstallés ou précédemment utilisés.
- Prend en charge tous les types de logiciels, qu'ils soient installables ou autonomes.
- Effectue une analyse précise et avancée de 22 emplacements système, que ce soit sur le disque d'installation de Windows ou dans le registre.
- Prend en charge l'analyse et la détection de nombreux noms d'éléments formatés, tels que les noms de logiciels versionnés, les noms de domaine, les noms de paquets, les noms de logiciels ou d'éditeurs attachés, les noms de jeux GOG, et bien plus encore.
- Détecte et ignore les dossiers et les clés du registre utilisés par le système, les jeux Epic, les logiciels récents, les logiciels du menu Démarrer, les dossiers de paquets Python, et bien plus encore.
- Analyse méticuleusement tous les dossiers des profils utilisateur.
- Gratuit, portable et open-source.
-
Afin de garantir une recherche fiable et représentative de tous les restes, il est recommandé d'effectuer les étapes suivantes :
- lancez une analyse anti-malware de votre configuration avec Malwarebytes et AdwCleaner ;
- désinstallez tous les logiciels inutiles et obsolètes (à partir des paramètres de Windows ou à l'aide d'un désinstalleur spécialisé) ;
- fermez tous les logiciels en cours d'exécution (notamment les versions portables) afin d'éviter les faux positifs.
-
Exécutez le script
Leftovers Hunter 0.X.cmden tant qu'administrateur et attendez quelques secondes. -
Une fois la recherche terminée, appuyez sur une touche pour ouvrir une liste colorée des noms des éléments détectés et examinez attentivement chaque ligne pour identifier les faux positifs.
- Si vous trouvez effectivement des erreurs dans cette liste (donc des éléments qui ne correspondent pas à des logiciels désinstallés), appuyez sur Entrée pour les surligner en vert et ajouter un commentaire explicatif sur leur nature (jeu précis, logiciel installé manuellement, paramètres spécialisés, etc.).
- Appuyez sur la touche H pour afficher une aide détaillée sur l'utilisation de cette interface (commandes disponibles, informations supplémentaires, etc.).
Leftovers Hunter repose sur un moteur d'analyse basé sur des expressions régulières avancées et une approche linguistique des noms d'éléments, permettant une détection précise et fiable des restes logiciels.
Contrairement à une simple détection par correspondance basique, le moteur effectue des analyses heuristiques et des vérifications très sophistiquées pour identifier correctement les éléments indésirables ou résiduels et limiter au mieux les faux positifs (à savoir les éléments détectés à tort).
Ci-dessous, un diagramme de flux simplifié détaillant le processus d'analyse appliqué à chaque élément :
flowchart TD
A[Début de l'analyse] --> B{Est un élément système ?}
B -->|Yes| X[Élément suivant]
B -->|No| C[Détections préliminaires]
C --> D[Analyses avec regex avancées]
D --> E[Moteur heuristique]
E --> F{Est un reste ?}
F -->|Yes| G[Ajout au rapport]
F -->|No| H[Élément suivant]
Une version plus technique de ce diagramme de flux est disponible pour connaître le flux exact d'analyse (vérifications préliminaires, algorithmes de sécurité, garde-fous, etc.).
Leftovers Hunter ne propose actuellement aucune fonctionnalité de suppression (manuelle ou automatique) afin de protéger l'intégrité de la configuration de l'utilisateur. En effet, bien que sophistiquées, les nombreuses analyses heuristiques ne permettent pas de garantir à 100 % que les éléments détectés sont bien des restes.
En conséquence, le logiciel se contente uniquement d'effectuer une analyse poussée du système et de fournir un rapport coloré des éléments détectés, sans nettoyer ou supprimer quoi que ce soit. Tout comme en intelligence artificielle, des vérifications humaines sont déterminantes pour identifier les erreurs et corriger les algorithmes d'analyse ou de sécurité. Même si Leftovers Hunter n'utilise aucun système d'IA, l'humain fait naturellement partie de la chaîne, au même titre que les tris de mails ou de photos.
L'objectif du projet est donc de collecter un maximum de retours et de données représentatives pour améliorer le logiciel et le rendre encore plus fiable et précis. Une fonctionnalité de suppression sera néanmoins ajoutée dans les futures versions lorsque les algorithmes seront suffisamment stables et éprouvés.
En savoir plus sur les processus d'amélioration du logiciel.
Leftovers Hunter est développé activement depuis février 2023, soit 3 ans. La frise suivante décrit les jalons majeurs du projet et sa génèse en 2020-2021 :
- 2020 — Prototype manuel initial
- 2021 — Évolutions avancées du prototype
- Mi-2021 — Premières versions automatiques
- Février 2023 — Reprise et consolidation majeure du projet
- Décembre 2023 — Ajout de nombreux tests unitaires
- 2024 — Structuration du code et traitements avancés
- Avril-août 2025 — Migration complète en PowerShell
- Septembre-octobre 2025 — Intégration d'une TUI colorée et d'une télémétrie anonyme sur Supabase
La période de 2 ans entre mi-2021 et février 2023 a globalement été consacrée au projet WinExport, tout aussi complexe et dense.
Notes importantes :
-
Cette frise présente uniquement les jalons majeurs. Consultez la timeline détaillée pour découvrir l'historique complet du projet.
-
Avant la migration en PowerShell, le projet était entièrement développé en Batch, que ce soit les premiers prototypes ou la version aboutie de 2023.
Consultez la version technique de ce diagramme de classes pour connaître l'architecture complète du projet.
Leftovers Hunter est développé avec plus d'une centaine de tests unitaires couvrant les principaux traitements linguistiques et heuristiques.
Les tests portent notamment sur :
- la normalisation des noms d'éléments ;
- le nettoyage de numéros de versions ;
- la détection d'acronymes logiciels ;
- la gestion des cas ambigus ou subtils ;
- les scénarios de nombreux cas limites et extrêmes, issus de configurations réelles.
En complément des tests unitaires, un injecteur interne permet de rejouer des scénarios d'exécution complets à partir de logs existants, qui sont chargés à la demande.
Cet injecteur sert principalement à :
- vérifier les migrations et refactorisations majeures (notamment pendant l'ancienne refonte en PowerShell) ;
- détecter les régressions comportementales ;
- vérifier que les corrections de bugs ou d'algorithmes de sécurité fonctionnent bien avec les logs concernés.
Notes importantes :
-
Les tests garantissent la cohérence algorithmique, mais une validation humaine reste nécessaire pour confirmer de nombreux cas complexes.
-
L'injecteur ne remplace pas les expérimentations techniques, qu'elles passent par l'invite de commandes, PowerShell ou des scripts utilitaires variés (notamment des statistiques de fréquence).
-
La partie la plus complexe du développement réside dans la formalisation et la généralisation d'expressions régulières robustes, permettant de résoudre un grand nombre de cas limites, voire tordus. L'injecteur ne répond donc pas à ces exigences et simplifie seulement les processus de tests et de vérifications système.
Ce projet a été testé sur une cinquantaine de configurations réelles et a bénéficié de très nombreux retours d'utilisateurs volontaires. Ces tests ont permis d'identifier des cas complexes, d'améliorer la détection des faux positifs et d'enrichir progressivement le système heuristique.
Le développement repose ainsi sur un solide équilibre entre analyse algorithmique et validation humaine permanente.

