Aller au contenuAller à l'arborescence
  1. C:
  2. Windows
  3. Prefetch
DossierRisque : Sans risque

Prefetch C:\Windows\Prefetch

C:\Windows\Prefetch : fichiers .pf de préchargement des applications lancées, reconstruits par Windows ; aussi une trace d'exécution précieuse en forensique.

Mis à jour le Par AltF4 Formation

À quoi ça sert

Prefetch garde, pour chaque programme lancé, une trace de ce qu’il a chargé et dans quel ordre, afin d’accélérer ses démarrages suivants. C’est un cache : Windows le reconstruit seul. En analyse forensique, c’est aussi une preuve qu’un programme a été exécuté.

Ce qu’il contient

  • Des fichiers .pf nommés NOM-DU-PROGRAMME-EMPREINTE.pf, un par exécutable lancé (par exemple NOTEPAD.EXE-D8414F97.pf).
  • Dans chaque .pf : la liste des fichiers chargés, le nombre d’exécutions et les dates des dernières (jusqu’à huit depuis Windows 8).
  • Des données exploitées par le service SysMain (anciennement Superfetch).
  • Le nombre de fichiers est plafonné (1024 depuis Windows 8) : le dossier ne grossit pas indéfiniment.

Risques et bonnes pratiques

  • Vous pouvez en vider le contenu, mais ça n’accélère rien : Windows recrée les fichiers au fil des lancements, et les premiers démarrages qui suivent sont un peu plus lents. Un cache corrompu se règle de la même façon.
  • Videz le contenu, jamais le dossier lui-même.
  • Sur une machine suspecte, copiez le dossier avant tout nettoyage. Le nom, la date de création et le nombre d’exécutions d’un .pf établissent qu’un programme a tourné, même supprimé depuis.

Commandes utiles

Fenêtre de terminal
# Nombre et taille des fichiers .pf
Get-ChildItem "$env:windir\Prefetch" -Filter *.pf | Measure-Object -Property Length -Sum
# Fichiers .pf d'un programme, du plus récent au plus ancien
Get-ChildItem "$env:windir\Prefetch" -Filter 'POWERSHELL*.pf' | Sort-Object LastWriteTime -Descending | Select-Object Name, CreationTime, LastWriteTime
# Configuration du préchargement (0 = désactivé, 1 = applications, 2 = démarrage, 3 = les deux) et état du service SysMain
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters' | Select-Object EnablePrefetcher, EnableSuperfetch
Get-Service SysMain
# Simulation de suppression (retirer -WhatIf pour l'exécuter, en administrateur)
Remove-Item "$env:windir\Prefetch\*.pf" -WhatIf

Signaler une erreur