Jump List Parser
Retour au blog

Où Windows stocke les fichiers Jump List (Win 7, 10, 11)

2026-05-254 min de lecture

Réponse courte. Deux dossiers par utilisateur sous le profil Roaming : %AppData%\Microsoft\Windows\Recent\AutomaticDestinations\ et %AppData%\Microsoft\Windows\Recent\CustomDestinations\. Ces chemins sont identiques sous Windows 7, 8, 10 et 11. Le même script de collecte fonctionne sans changement depuis une décennie et demie.

AutomaticDestinations

Écrit par la shell elle-même lorsqu'un utilisateur ouvre un document via une application enregistrée :

%AppData%\Microsoft\Windows\Recent\AutomaticDestinations\

Résolu : C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\. Chaque nom de fichier est <AppID>.automaticDestinations-ms<AppID> est une chaîne hexadécimale en minuscules de 16 caractères. Le fichier est un OLE Compound File (MS-CFB) dont les flux numérotés sont des structures LNK, ordonnées par un seul flux DestList.

CustomDestinations

Écrit par l'application via l'API COM ICustomDestinationList pour ses propres éléments épinglés et catégories personnalisées (Tâches, Récents, groupes nommés par l'app) :

%AppData%\Microsoft\Windows\Recent\CustomDestinations\

Même convention de nommage : <AppID>.customDestinations-ms. Le format est une séquence plate de structures LNK précédées d'un petit en-tête, terminée par 0xBABFFBAB. Pas de conteneur OLE.

Par utilisateur, pas par machine

Les deux répertoires résident sous AppData\Roaming et itinèrent avec le profil. Il n'y a pas de stockage Jump List à l'échelle de la machine. Sur un hôte en direct, echo %AppData% se résout à l'utilisateur actuel ; sur une image montée, parcourez \Users\ et mappez chaque dossier de profil à son SID via HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\<SID> dans le registre si vous devez rattacher l'activité à un compte.

Sur une image forensique

Tirez l'arbre Recent\ complet par utilisateur :

\Users\<username>\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\
\Users\<username>\AppData\Roaming\Microsoft\Windows\Recent\CustomDestinations\
\Users\<username>\AppData\Roaming\Microsoft\Windows\Recent\

Le dossier parent Recent\ héberge aussi des raccourcis .lnk classiques, corroboration utile mais artefact séparé. Les deux sous-dossiers *Destinations existent sans changement depuis Windows 7, donc un seul script de collecte couvre toutes les versions supportées. KAPE a une cible pour cela si vous préférez ne pas écrire le vôtre.

Sur un système en direct, attendez-vous à ce qu'explorer.exe conserve des handles ouverts. Collectez depuis une Volume Shadow Copy (\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyN\…), depuis une image forensique, ou en déconnectant d'abord l'utilisateur. Le dossier Recent\ est aussi touché par le journal USN et le MFT, tous deux valent la peine d'être tirés en même temps, les événements de création et de suppression pour les fichiers Jump List survivent souvent aux fichiers eux-mêmes.

Ce qu'est réellement l'AppID

Le préfixe du nom de fichier est une chaîne hexadécimale en minuscules de 16 caractères, par exemple 1b4dd67f29cb1962 (Quick Access sur Windows moderne). C'est un hash CRC64 tronqué calculé sur le chemin de l'exécutable de l'application, parfois avec des données identifiantes supplémentaires mélangées. Le même binaire au même chemin produit la même AppID sur chaque machine, c'est pourquoi les listes d'AppID publiées fonctionnent. Les cartes d'AppID livrées avec JLECmd couvrent la plupart des applications bien connues ; pour tout ce qui n'est pas mappé, l'AppID est une piste, pas du bruit.

Deux conséquences de la dérivation d'AppID :

  • Déplacez ou renommez l'exécutable et l'AppID change. L'ancien fichier Jump List reste dans le dossier, orphelin, avec une AppID obsolète qui ne mappe plus à aucun binaire installé. Cet orphelin vaut en lui-même un coup d'œil.
  • La même application installée au même chemin sur deux machines produit la même AppID sur les deux, mais les contenus sont par utilisateur. L'AppID seule n'attribue pas l'activité, jumelez-la avec le chemin du profil utilisateur.

Checklist d'acquisition rapide

  • Imagez ou montez le volume ; ne copiez pas en direct avec un simple xcopy.
  • Parcourez \Users\ et collectez les deux dossiers *Destinations\ par utilisateur.
  • Tirez le dossier parent Recent\ pour les fichiers .lnk autonomes.
  • Tirez \Users\<user>\NTUSER.DAT pour les clés UserAssist et RecentDocs correspondantes.
  • Notez toute AppID inattendue et tout dossier vide de fichiers plus anciens, les deux sont des constatations.

Pour la disposition des octets sur disque de ces fichiers, voir la décomposition du format de fichier AutomaticDestinations.

Pour aller plus loin