Jump List Parser
Volver al blog

Dónde almacena Windows los archivos de Jump List (Win 7, 10, 11)

2026-05-254 min de lectura

Respuesta corta. Dos carpetas por usuario bajo el perfil Roaming: %AppData%\Microsoft\Windows\Recent\AutomaticDestinations\ y %AppData%\Microsoft\Windows\Recent\CustomDestinations\. Estas rutas son idénticas en Windows 7, 8, 10 y 11. El mismo script de recolección ha funcionado sin cambios durante una década y media.

AutomaticDestinations

Escrito por la propia shell cuando un usuario abre un documento a través de una aplicación registrada:

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

Resuelto: C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\. Cada nombre de archivo es <AppID>.automaticDestinations-ms donde <AppID> es una cadena hexadecimal en minúsculas de 16 caracteres. El archivo es un OLE Compound File (MS-CFB) cuyos flujos numerados son estructuras LNK, ordenadas por un solo flujo DestList.

CustomDestinations

Escrito por la aplicación vía la API COM ICustomDestinationList para sus propios elementos anclados y categorías personalizadas (Tareas, Recientes, grupos nombrados por la app):

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

Misma convención de nombres: <AppID>.customDestinations-ms. El formato es una secuencia plana de estructuras LNK precedidas por una pequeña cabecera, terminadas por 0xBABFFBAB. Sin contenedor OLE.

Por usuario, no por máquina

Ambos directorios residen bajo AppData\Roaming y roaman con el perfil. No hay almacenamiento de Jump List a nivel de máquina. En un host en vivo, echo %AppData% se resuelve al usuario actual; en una imagen montada, recorre \Users\ y mapea cada carpeta de perfil a su SID vía HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\<SID> en el registro si necesitas vincular la actividad a una cuenta.

En una imagen forense

Tira todo el árbol Recent\ por usuario:

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

La carpeta padre Recent\ también alberga accesos directos .lnk clásicos, corroboración útil pero un artefacto separado. Las dos subcarpetas *Destinations han existido sin cambios desde Windows 7, así que un solo script de recolección cubre todas las versiones soportadas. KAPE tiene un objetivo para esto si prefieres no escribir el tuyo.

En un sistema en vivo, espera que explorer.exe retenga handles abiertos. Recolecta desde una Volume Shadow Copy (\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyN\…), desde una imagen forense, o cerrando primero la sesión del usuario. La carpeta Recent\ también se toca con el diario USN y el MFT, ambos vale la pena tirarlos al mismo tiempo, los eventos de creación y eliminación de archivos de Jump List a menudo sobreviven a los propios archivos.

Qué es realmente la AppID

El prefijo del nombre de archivo es una cadena hexadecimal en minúsculas de 16 caracteres, por ejemplo 1b4dd67f29cb1962 (Quick Access en Windows moderno). Es un hash CRC64 truncado calculado sobre la ruta del ejecutable de la aplicación, a veces con datos identificativos adicionales mezclados. El mismo binario en la misma ruta produce la misma AppID en cada máquina, por eso funcionan las listas de AppID publicadas. Los mapas de AppID que se envían con JLECmd cubren la mayoría de las aplicaciones conocidas; para cualquier cosa no mapeada, la AppID es una pista, no ruido.

Dos consecuencias de la derivación de AppID:

  • Mueve o renombra el ejecutable y la AppID cambia. El archivo Jump List viejo se queda en la carpeta, huérfano, con una AppID obsoleta que ya no mapea a ningún binario instalado. Ese huérfano vale por sí mismo una mirada.
  • La misma aplicación instalada en la misma ruta en dos máquinas produce la misma AppID en ambas, pero los contenidos son por usuario. La AppID por sí sola no atribuye la actividad, empareja con la ruta del perfil de usuario.

Lista rápida de adquisición

  • Imagina o monta el volumen; no copies en vivo con xcopy simple.
  • Recorre \Users\ y recoge ambas carpetas *Destinations\ por usuario.
  • Tira la carpeta padre Recent\ para los archivos .lnk independientes.
  • Tira \Users\<user>\NTUSER.DAT para las claves UserAssist y RecentDocs correspondientes.
  • Nota cualquier AppID inesperada y cualquier carpeta vacía de archivos más antiguos, ambos son hallazgos.

Para el layout de bytes en disco de estos archivos, ver el desglose del formato de archivo AutomaticDestinations.

Lecturas adicionales