Por qué Windows Server no tiene archivos Prefetch
Si extrajiste una carpeta Prefetch\ de una instalación de Windows
Server y la encontraste vacía, lo más probable es que el sistema se
estuviera comportando como está diseñado. Prefetch es una
característica de estación de trabajo. Microsoft lo desactiva por
defecto en las SKUs de Server porque las asunciones de carga de
trabajo — servicios de larga duración en lugar de aplicaciones
interactivas de vida corta — lo hacen contraproducente en términos de
rendimiento.
La clave del registro
El comportamiento de Prefetch se controla con una sola clave:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
Dos valores importan:
EnablePrefetcher(DWORD) —0(desactivado),1(solo prefetch de lanzamiento de aplicaciones),2(solo prefetch de arranque),3(ambos, el valor por defecto en estación de trabajo).EnableSuperfetch(DWORD) — misma semántica de valores, controla SuperFetch / SysMain, que es la característica más amplia de gestión de memoria que aloja la lógica de Prefetch en Windows moderno.
En Windows Server, ambos tienen por defecto 0. En las ediciones
estación de trabajo de Windows 10/11, ambos tienen por defecto 3.
El servicio SysMain
El servicio que escribe los archivos Prefetch se llama SysMain
(renombrado desde "Superfetch" en versiones anteriores). Si SysMain
está detenido o desactivado, la generación de Prefetch se detiene
aunque el registro esté en 3. Una comprobación en dos pasos sobre un
sistema en vivo:
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters"
sc query SysMain
Se requiere tanto EnablePrefetcher = 3 como SysMain en ejecución
para que aparezcan nuevos archivos Prefetch en C:\Windows\Prefetch\.
Implicaciones forenses
Una carpeta Prefetch\ vacía no es por sí sola un hallazgo negativo.
Antes de concluir "sin evidencia Prefetch", verifica:
- Edición del SO: las ediciones Server, incluso tras meses encendidas, prácticamente no tendrán Prefetch.
- Los valores del registro: confirma
EnablePrefetcheryEnableSuperfetchen el momento de la recolección. Ambos a0indica que el sistema fue configurado para suprimir Prefetch. - Estado de SysMain: si el servicio fue detenido o desactivado, eso suele ser visible en el registro de eventos del sistema. Busca eventos del Service Control Manager en torno al momento en que esperarías que hubiera empezado la generación de Prefetch.
- SSD vs HDD: algunas builds de Windows 10 desactivan automáticamente Prefetch en sistemas exclusivamente con SSD por motivos de I/O. Es raro en versiones actuales pero conviene saberlo.
Reactivación para recolección
Si controlas el sistema y quieres Prefetch activado para tener visibilidad continua:
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
Ten en cuenta que activar Prefetch no rellena retroactivamente los
datos de ejecución históricos. Desde el momento en que SysMain empieza
a escribir de nuevo, los nuevos archivos .pf reflejan únicamente
nuevos lanzamientos. Para obtener evidencia de ejecuciones pasadas en
un sistema donde Prefetch estaba desactivado, tendrás que apoyarte en
Amcache, ShimCache y los registros de
eventos.
Desactivado por política
En algunos entornos, Prefetch se suprime mediante directiva de grupo
(Group Policy) o mediante baselines de bastionado de endpoints (CIS,
STIG, perfiles de proveedor). Los valores del registro reflejarán la
configuración de la política; comprobar el resultado local de Group
Policy (gpresult /h) confirma si el valor fue forzado por una GPO o
establecido localmente.