setupapi.dev.log: la primera conexión de un dispositivo USB
Cómo leer las secciones de instalación de setupapi.dev.log, convertir su hora local a UTC y compararla con la primera instalación del registro.
En resumen. C:\Windows\INF\setupapi.dev.log registra una sección cada vez que Windows instala un dispositivo. La primera sección de un dispositivo USB corresponde a su primera conexión a ese equipo. Sus marcas de tiempo están en hora local: conviértelas con la zona horaria del hive SYSTEM antes de compararlas con cualquier otra cosa.
Cómo es una sección
>>> [Device Install (Hardware initiated) - USBSTOR\Disk&Ven_Contoso&Prod_SecureFlash&Rev_1.00\CS1234567890&0]
>>> Section start 2026/09/14 12:30:14.212
ump: Creating Install Process: DrvInst.exe 12:30:14.215
...
<<< Section end 2026/09/14 12:30:16.034
<<< [Exit status: SUCCESS]
Una sola memoria suele generar varias secciones en pocos segundos: el dispositivo USB (USB\VID_…&PID_…\serial), el disco (USBSTOR\…) y la vista de dispositivo portátil del volumen (SWD\WPDBUSENUM\…). Todas llevan el número de serie, así que se agrupan bajo un único dispositivo.
Conversión a UTC
Las marcas de tiempo no indican ninguna zona horaria. El hive SYSTEM guarda la zona en ControlSet00x\Control\TimeZoneInformation: Bias, StandardBias, DaylightBias y dos reglas, StandardStart y DaylightStart (del tipo "último domingo de marzo a las 02:00"). Aplica la regla de la fecha de la entrada, no el desfase vigente cuando se recopiló el hive: una entrada de septiembre en un equipo de París es UTC+2 aunque adquieras el disco en enero.
En el ejemplo anterior, 12:30:14 en Romance Standard Time en septiembre corresponde a 10:30:14 UTC. USB Forensics hace esta conversión a partir del hive y lo indica en una nota; sin el hive SYSTEM, muestra las horas como si fueran UTC y te avisa.
Las reglas específicas de cada año (Time Zones\<zone>\Dynamic DST en SOFTWARE) son poco habituales en las zonas europeas y norteamericanas, pero pueden importar en otras regiones.
Comparación con el registro
La 0065 FirstInstallDate del registro debería estar a pocos segundos de la primera sección de setupapi. Cuando no es así:
- setupapi es anterior: el dispositivo se desinstaló (Administrador de dispositivos, herramientas de limpieza) y se volvió a instalar; el registro se reconstruyó y setupapi recuerda la instalación original.
- Exactamente una hora de diferencia: un problema de conversión de zona horaria — revisa la zona y la regla de horario de verano.
- Ninguna sección de setupapi: el registro se rotó o se eliminó; busca archivos
setupapi.dev.*.logy Volume Shadow Copies.
Informa de ambos valores. Una herramienta que elige uno en silencio oculta la única pista que tenías sobre una reinstalación.
Otras fuentes de instalación
Los eventos UserPnp 20001/20003 del registro System (instalación de controlador para un dispositivo) y Kernel-PnP/Configuration 400 ofrecen horas de instalación independientes en UTC. Son comprobaciones cruzadas útiles cuando la conversión de setupapi genera dudas. Consulta el mapa completo de artefactos USB y el artículo sobre USBSTOR para la parte del registro.