ActivitiesCache.db : types d'activité et champs du payload
Référence des champs d'ActivitiesCache.db : ActivityType 5, 6, 10 et 16, JSON AppId, clés du payload comme activeDurationSeconds et toutes les colonnes de date.
En bref. Dans Activity, la colonne ActivityType indique comment lire la ligne : 5 = ouverture (application, fichier, page), 6 = au premier plan avec activeDurationSeconds, 10 = texte du presse-papiers dans ClipboardPayload (Base64), 16 = événement copier/coller avec Group = Copy ou Paste, 2 = notification. L'application se trouve dans le tableau JSON AppId ; les détails dans le JSON Payload. Les dates sont en secondes Unix, UTC.
Voici la référence des champs pour la série. Pour savoir ce qu'une ligne prouve, lisez ensuite Windows Timeline prouve-t-il l'exécution ou l'accès à un fichier ?.
Types d'activité
Le type d'activité est un entier. Les significations ci-dessous sont des observations de chercheurs, pas une spécification Microsoft : considérez toute valeur absente de la liste comme inconnue.
| ActivityType | Signification | Source | À lire |
|---|---|---|---|
| 2 | Notification (toast) | kacos2000 | Payload |
| 3 | Usage système (sauvegarde, liée à la connexion) | dépôt kacos2000 | Payload |
| 5 | Ouverture d'application, de fichier ou de page | kacos2000 | displayText, appDisplayName, contentUri |
| 6 | Application utilisée / au premier plan | kacos2000 | activeDurationSeconds, userTimezone, StartTime, EndTime |
| 10 | Contenu du presse-papiers | kacos2000, inversecos | ClipboardPayload (Base64) |
| 11, 12, 15 | Opérations système (identifiants, Wi-Fi, personnalisation) | dépôt kacos2000 | Payload |
| 16 | Opération copier ou coller | kacos2000 | Group (Copy / Paste), clipboardDataId dans Payload |
Le Windows Timeline Parser associe 5 à Ouverture (app / fichier), 6 à Utilisation (focus), 10 à Presse-papiers, 16 à Copier / coller, 2 à « Notification », et tout le reste à « Autre », en conservant le numéro brut dans la vue détaillée.
La table Activity, colonne par colonne
| Colonne | Contenu | Remarques |
|---|---|---|
Id | GUID de l'activité | Relie à Activity_PackageId.ActivityId et ActivityOperation.Id |
AppId | Tableau JSON identifiant l'application | Voir plus bas |
AppActivityId | Identifiant propre à l'application | Pour les fichiers ouverts, il se termine souvent par un identifiant propre au fichier (kacos2000) |
ActivityType | Type entier | Tableau ci-dessus |
ActivityStatus | 1 active, 2 mise à jour, 3 supprimée, (4 ignorée) | Reprend les valeurs status de Graph (Microsoft Graph) |
Payload | JSON (stocké en BLOB) | Texte affiché, URI, durées, fuseau horaire |
ClipboardPayload | Tableau JSON avec contenu en Base64 | Type 10 (contenu) |
StartTime, EndTime | Secondes Unix, UTC | EndTime peut être vide ou à 0 pour les activités ponctuelles |
LastModifiedTime, LastModifiedOnClient | Secondes Unix, UTC | Dernière modification de la ligne |
ExpirationTime | Secondes Unix, UTC | 30 jours après la dernière modification ; 12 heures pour le presse-papiers (kacos2000) |
CreatedInCloud | Secondes Unix, UTC | Pertinent uniquement pour une activité synchronisée |
PlatformDeviceId | Identifiant d'appareil | Distingue l'appareil local des appareils synchronisés |
IsLocalOnly | 0 / 1 | Indique si l'activité reste hors du cloud |
Group, Tag | Texte libre | Group = Copy / Paste pour le type 16 |
ETag | Entier | Change quand la ligne change ; trier dessus donne l'ordre d'écriture, pas l'ordre des événements |
kacos2000 relève que toutes les dates sont stockées en UTC et que l'ExpirationTime valait exactement 2 592 000 secondes (30 jours) après LastModifiedTime dans les bases examinées (kacos2000).
AppId : quelle application
AppId est un tableau JSON d'objets { "application": ..., "platform": ... }. Une même activité peut décrire l'application de plusieurs façons (JSON AppId) :
[
{"application": "{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\\notepad.exe", "platform": "windows_win32"},
{"application": "{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\\notepad.exe", "platform": "packageId"},
{"application": "", "platform": "alternateId"}
]
| Valeur de platform | Contenu typique |
|---|---|
windows_win32 | Chemin d'une application de bureau, souvent préfixé par un GUID de dossier connu |
x_exe_path | Exécutable autonome lancé depuis un chemin précis |
windows_universal | Identité d'application Store / UWP (par exemple Microsoft.Windows.Explorer) |
packageId | Nom de package ou chemin d'exécutable |
alternateId | Souvent vide |
Le préfixe GUID est un KNOWNFOLDERID (GUID de dossier connu). Les plus fréquents :
| GUID | Dossier |
|---|---|
{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7} | %SystemRoot%\System32 (FOLDERID_System) |
{6D809377-6AF0-444B-8957-A3773F02200E} | Program Files, 64 bits (FOLDERID_ProgramFilesX64) |
{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E} | Program Files (x86) (FOLDERID_ProgramFilesX86) |
{905E63B6-C1BF-494E-B29C-65B732D3D21A} | Program Files (FOLDERID_ProgramFiles) |
{D65231B0-B2F1-4857-A4CE-A8E7C6EA7D27} | %SystemRoot%\SysWOW64 (FOLDERID_SystemX86) |
{F38BF404-1D43-42F2-9305-67DE0B28FC23} | %SystemRoot% (FOLDERID_Windows) |
Le GUID de dossier connu n'enregistre pas la lettre de lecteur : l'outil l'affiche donc sous forme de variable d'environnement (%ProgramFiles%\7-Zip\7zFM.exe) plutôt que de supposer C:. Un x_exe_path avec un chemin littéral comme C:\Users\Public\rclone.exe mérite un second regard : c'est un exécutable lancé hors des emplacements d'installation habituels.
Payload : les détails
La colonne Payload contient du JSON. Les clés varient selon le type d'activité et l'application. Celles qui comptent pour l'enquête :
| Clé | Types | Signification |
|---|---|---|
displayText | 5 | Ce qu'affichait la vignette Timeline : nom de fichier, titre de page |
appDisplayName | 5 | Nom convivial de l'application (« Notepad », « Excel ») |
description | 5 | Souvent le chemin complet du fichier |
contentUri | 5 | URI file:/// de l'élément ouvert ; peut porter des paramètres de requête supplémentaires |
activationUri | 5 | Comment Windows relancerait l'activité |
activeDurationSeconds | 6 | Secondes d'utilisation active de l'application (durée active) |
userTimezone | 6 | Fuseau horaire IANA/Olson de l'appareil à la création de l'activité (Microsoft Graph) |
clipboardDataId | 16 | Relie les événements de copie et de collage d'un même élément (kacos2000) |
Deux mises en garde issues des tests de kacos2000 : la première entrée d'exécution d'une application de bureau peut ne porter aucune durée, et la durée du payload diffère parfois de EndTime - StartTime (kacos2000). Indiquez dans le rapport quel champ vous avez utilisé.
L'outil convertit contentUri en chemin Windows (file:///E:/exfil/Payroll_2026.xlsx?... devient E:\exfil\Payroll_2026.xlsx, file://server/share/x devient \\server\share\x), se replie sur description quand elle ressemble à un chemin, et conserve l'URI brute et le JSON complet du payload dans le panneau de détail.
ActivityOperation et Activity_PackageId
ActivityOperation reprend la plupart des colonnes, plus OperationType (1 insertion, 2 mise à jour, 3 suppression) et CreatedTime, le moment où l'opération a été mise en file d'attente. kacos2000 a constaté que lorsqu'un utilisateur retire une vignette de Timeline, l'entrée est copiée dans ActivityOperation avec un nouvel ETag et un statut supprimé (kacos2000). C'est pourquoi la table ActivityOperation est l'endroit où chercher l'historique que l'utilisateur a tenté de nettoyer.
Activity_PackageId liste, par ActivityId, une Platform, un PackageName (souvent le chemin de l'exécutable) et un ExpirationTime. L'outil rattache ces noms de package à chaque activité.
Les dates : quoi convertir et comment
Chaque colonne de date est en secondes Unix (epoch), en UTC. Convertissez avec un formateur UTC explicite (datetime(StartTime, 'unixepoch') dans SQLite), et n'utilisez userTimezone que pour exprimer l'heure locale vue par l'utilisateur. Dans l'outil, la bascule UTC / Local ne change que l'affichage ; les exports CSV contiennent des colonnes UTC (StartTimeUtc, EndTimeUtc, ...).
FAQ
Que signifie ActivityType 5 dans ActivitiesCache.db ?
Le type 5 enregistre l'ouverture d'une application, d'un fichier ou d'une page web. Le payload contient le texte affiché, le nom de l'application et, pour les fichiers, un contentUri avec le chemin.
Que signifie ActivityType 6 ?
Le type 6 enregistre une application en cours d'utilisation, au premier plan. Le payload contient activeDurationSeconds et le fuseau horaire de l'utilisateur, et la ligne possède une heure de début et de fin.
Quel format de date utilise ActivitiesCache.db ?
Des secondes Unix (epoch) en UTC pour StartTime, EndTime, LastModifiedTime, ExpirationTime et les autres colonnes de date.