Retour à tous les articles

Pourquoi Windows Server n'a pas de fichiers prefetch

Si vous avez extrait un dossier Prefetch\ d'une installation Windows Server pour ne rien y trouver, le système se comportait probablement comme prévu. Prefetch est une fonctionnalité de poste de travail. Microsoft le désactive par défaut sur les éditions Server parce que les hypothèses de charge de travail — des services à exécution longue plutôt que des applications interactives à durée de vie courte — le rendent contre-productif pour la performance.

La clé de registre

Le comportement de prefetch est gouverné par une seule clé :

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters

Deux valeurs comptent :

  • EnablePrefetcher (DWORD) — 0 (désactivé), 1 (prefetch au lancement d'application uniquement), 2 (prefetch de démarrage uniquement), 3 (les deux, valeur par défaut sur poste de travail).
  • EnableSuperfetch (DWORD) — mêmes sémantiques de valeur, contrôle SuperFetch / SysMain, la fonctionnalité plus large de gestion de la mémoire qui héberge la logique prefetch sur Windows moderne.

Sur Windows Server, les deux valent 0 par défaut. Sur les éditions poste de travail Windows 10/11, les deux valent 3 par défaut.

Le service SysMain

Le service qui écrit les fichiers prefetch s'appelle SysMain (renommé depuis « Superfetch » dans les versions antérieures). Si SysMain est arrêté ou désactivé, la génération de prefetch s'arrête même si le registre est à 3. Une vérification en deux temps sur un système en fonctionnement :

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters"
sc query SysMain

Il faut à la fois EnablePrefetcher = 3 et que SysMain soit en cours d'exécution pour que de nouveaux fichiers prefetch apparaissent dans C:\Windows\Prefetch\.

Implications forensiques

Un dossier Prefetch\ vide n'est pas en soi un constat négatif. Avant de conclure « aucune preuve prefetch », vérifiez :

  1. L'édition de l'OS : les éditions Server, même actives depuis des mois, n'auront pratiquement aucun prefetch.
  2. Les valeurs du registre : confirmez EnablePrefetcher et EnableSuperfetch au moment de la collecte. Les deux à 0 indiquent que le système était configuré pour supprimer prefetch.
  3. L'état de SysMain : si le service a été arrêté ou désactivé, c'est souvent visible dans le journal d'événements Système. Cherchez des événements émis par le Service Control Manager autour du moment où vous attendiez le démarrage de la génération de prefetch.
  4. SSD vs HDD : certaines builds Windows 10 désactivent automatiquement prefetch sur les systèmes uniquement SSD, pour des raisons d'I/O. C'est rare sur les versions actuelles, mais bon à savoir.

Réactiver pour la collecte

Si vous contrôlez le système et souhaitez activer prefetch pour la visibilité continue :

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters" /v EnablePrefetcher /t REG_DWORD /d 3 /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters" /v EnableSuperfetch /t REG_DWORD /d 3 /f
sc config SysMain start= auto
net start SysMain

Notez qu'activer prefetch ne reconstitue pas rétroactivement les données d'exécution historiques. À partir du moment où SysMain recommence à écrire, les nouveaux fichiers .pf ne reflètent que les nouveaux lancements. Pour les preuves d'exécution passées sur un système où prefetch était désactivé, il vous faudra vous appuyer sur Amcache, ShimCache et les journaux d'événements.

Désactivé par stratégie

Dans certains environnements, prefetch est supprimé par stratégie de groupe (GPO) ou par les baselines de durcissement des endpoints (CIS, STIG, profils éditeurs). Les valeurs du registre refléteront le réglage de la stratégie ; consulter le résultat de la stratégie de groupe locale (gpresult /h) permet de confirmer si la valeur a été forcée par une GPO ou définie localement.