Windows incluye una característica de seguridad denominada integridad de código kernel que ayuda a proteger el sistema al garantizar que los controladores de kernel cargados en el sistema se ejecuten con integridad y estén firmados criptográficamente por una autoridad de confianza de Microsoft.

Si ves este mensaje, significa que un software de modo kernel o controlador no está firmado correctamente o no cumple los requisitos de firma de integridad de código del kernel de Windows.

Seguridad de Windows cuadro de diálogo de bloqueo que se muestra cuando se bloquea un controlador

Windows requiere que todos los controladores nuevos se envíen y firmen mediante el proceso del Programa de compatibilidad de hardware de Windows (WHCP ). Controladores de confianza de Windows firmados previamente por el programa firmado entre varios expirada . Sin embargo, con la actualización de seguridad de abril de 2026, estos controladores ya no son de confianza de forma predeterminada. El anuncio está disponible aquí: https://go.microsoft.com/fwlink/?linkid=2356646.

¿Qué es la directiva de controladores de Windows?

La directiva de controlador de Windows es una directiva del kernel de Windows que restringe qué controladores del modo kernel pueden cargarse en el dispositivo. Cuando está activa, solo se permite la carga de los siguientes controladores:

  1. Controladores firmados correctamente mediante el proceso de certificación WHCP de Microsoft

  2. Los controladores que aparecen en la directiva de controladores de Windows permiten la lista de controladores acreditados firmados por el programa con firma cruzada

Los controladores que no estén firmados por Microsoft WHCP o que aparezcan en la directiva de controladores de Windows se bloquearán en el ámbito de los sistemas habilitados.

Esta característica te ayuda a protegerte de controladores potencialmente inseguros o no probados, lo que reduce el riesgo de malware, la inestabilidad del sistema y las vulnerabilidades de seguridad causadas por controladores y editores de controladores no edredones.

¿Cómo funciona esta característica?

La directiva de controlador de Windows usa un enfoque de dos fases, como El control de aplicaciones inteligentes , para aumentar gradualmente la protección del dispositivo:

Modo de evaluación (auditoría)

Cuando la característica se activa por primera vez, se inicia en modo de evaluación . En esta fase:

  • Los controladores que se bloquearían por la directiva se auditarán, pero se podrá cargar . Esto garantiza que el dispositivo siga funcionando con normalidad, mientras que Windows determina si la aplicación es adecuada para el sistema.

  • Windows realiza un seguimiento de cuántos controladores del sistema se verían afectados por la directiva.

  • Si se detecta un controlador que infringe la directiva durante la evaluación, se restablece el progreso de la evaluación. Esto significa que la cuenta atrás para la aplicación comienza de nuevo, dando a Windows más tiempo para observar el uso de controladores del sistema.

Criterios de evaluación

Windows supervisa los siguientes criterios para determinar cuándo está listo el dispositivo para su aplicación:

  • Tiempo de actividad del sistema : el dispositivo debe haber acumulado 100 horas de uso activo.

  • Sesiones de arranque : el dispositivo debe haberse reiniciado al menos 3 veces (2 veces en Windows Server) desde que comenzó la evaluación.

  • No hay infracciones de directivas : Si se carga un controlador que se bloquearía durante el período de evaluación, los contadores de tiempo de actividad y sesión de arranque se restablecen a cero , ampliando el período de evaluación.

Si el dispositivo carga constantemente controladores que pasan la directiva y cumplen estos criterios, el sistema se considera un buen candidato para la aplicación.

Modo de obligatoriedad

Una vez que se cumplen los criterios de evaluación, Windows pasa automáticamente al modo de obligatoriedad . En esta fase:

  • Los dispositivos están protegidos frente a controladores que no cumplen los requisitos de firma de la directiva de controladores de Windows.

  • Estos controladores no pueden cargarse y generar datos de diagnóstico para que Microsoft los revise, así como las entradas del registro de eventos de Windows que puede revisar.

  • Una lista de permitidos de controladores y editores específicos se incluye en la directiva para permitir que determinados controladores heredados ampliamente usados que aún no estén certificados para WHCP puedan seguir funcionando.

Una vez que el modo de obligatoriedad está activo, la directiva permanece en vigor durante los reinicios.

Preguntas más frecuentes

Si un controlador está bloqueado por esta directiva, es posible que veas lo siguiente:

  • Un dispositivo de hardware no funciona correctamente.

  • No se reconoce ningún periférico o componente (impresora, adaptador de red, GPU, etc.).

  • No se puede iniciar una aplicación que depende de un controlador del kernel.

Puede confirmar si la directiva de controlador de Windows es responsable comprobando los registros de eventos de integridad de código mediante los dos métodos siguientes.

Eventos de integridad de código de consulta manualmente    

  1. Haz clic con el botón derecho en el botón Inicio y selecciona Visor de eventos .

  2. En el panel izquierdo, vaya a: Registros de aplicaciones y servicios > CodeIntegrity > Operational de Microsoft > Windows >

  3. Busque o filtre el registro para ver los eventos con estos identificadores:

  • Id. de evento 3076 : se auditó un controlador (se habría bloqueado pero se permitió porque la directiva está en modo auditoría).

  • Event ID 3077 : un controlador se bloqueó para que no se cargara porque infringía la directiva de aplicación.

En los detalles del evento, busque el campo Id. de directiva . Los eventos causados por esta característica harán referencia a uno de los siguientes GUID de directiva:

  • Directiva de auditoría : {784C4414-79F4-4C32-A6A5-F0FB42A51D0D}

  • Aplicar directiva : {8F9CB695-5D48-48D6-A329-7202B44607E3}

Eventos de integridad de código de consulta con PowerShell

Puede usar PowerShell para encontrar rápidamente eventos relacionados con esta característica:

# Find audit events (Event ID 3076) from the Windows Driver audit policy

$events = Get-WinEvent -LogName 'Microsoft-Windows-CodeIntegrity/Operational' -FilterXPath "*[System[EventID=3076]]" -ErrorAction SilentlyContinue |

Where-Object { $_.Message -like '*784C4414-79F4-4C32-A6A5-F0FB42A51D0D*' }

$results = $events | ForEach-Object {

$xml = [xml]$_.ToXml()

$data = $xml.Event.EventData.Data

[PSCustomObject]@{

TimeCreated = $_.TimeCreated

DriverName    = ($data | Where-Object { $_.Name -eq 'File Name' }).'#text'

ProductName = ($data | Where-Object { $_.Name -eq 'ProductName' }).'#text'

ParentProcess = ($data | Where-Object { $_.Name -eq 'Process Name' }).'#text'

}

}

$results | Select-Object DriverName, ProductName, ParentProcess -Unique | Format-Table -AutoSize -Wrap

# Find block events (Event ID 3077) from the Windows Driver enforced policy

$events = Get-WinEvent -LogName 'Microsoft-Windows-CodeIntegrity/Operational' -FilterXPath "*[System[EventID=3077]]" -ErrorAction SilentlyContinue |

Where-Object { $_.Message -like '*8F9CB695-5D48-48D6-A329-7202B44607E3*' }

$results = $events | ForEach-Object {

$xml = [xml]$_.ToXml()

$data = $xml.Event.EventData.Data

[PSCustomObject]@{

TimeCreated = $_.TimeCreated

DriverName    = ($data | Where-Object { $_.Name -eq 'File Name' }).'#text'

ProductName = ($data | Where-Object { $_.Name -eq 'ProductName' }).'#text'

ParentProcess = ($data | Where-Object { $_.Name -eq 'Process Name' }).'#text'

}

}

$results | Select-Object DriverName, ProductName, ParentProcess -Unique | Format-Table -AutoSize -Wrap

Los detalles del evento incluirán el nombre del controlador que se auditó o bloqueó y el nombre del proceso que intentó cargar el controlador, lo que puede ayudarte a identificar qué controlador o dispositivo se ve afectado.

Si eres el usuario del dispositivo o el administrador de TI

  1. Comprueba los registros de eventos siguiendo los pasos anteriores para identificar qué controlador se está bloqueando.

  2. Busca controladores actualizados en Windows Update. Es posible que los controladores firmados con certificación WHCP ya estén disponibles a través de Windows Update. Ve a Configuración > Windows Update > Opciones avanzadas > Actualizaciones opcionales > Actualizaciones de controladores para buscar actualizaciones de controladores disponibles.

  3. Visita el sitio web del fabricante . Descarga la versión del controlador más reciente desde la página de soporte técnico oficial del proveedor: es más probable que las versiones más recientes estén firmadas por WHCP.

4. Póngase en contacto con el proveedor de hardware o software que publica el controlador. Pregúntales si está disponible una versión certificada por WHCP del controlador y dónde acceder a él. La mayoría de los proveedores ya certifican sus controladores.

Si eres un editor de controladores

Si desarrollas y distribuyes controladores en modo kernel para Windows, debes asegurarte de que los controladores estén firmados mediante el proceso whcp:

  1. Únete al Centro de desarrollo de hardware de Windows . Regístrate en el Centro de desarrollo de hardware de Windows con un certificado de firma de código EV (validación extendida) válido.

  2. Crear un envío . En el Panel de hardware, crea un nuevo producto y envía el paquete de controladores para su certificación.

  3. Ejecute las pruebas HLK . Usa el Kit de laboratorio de hardware (HLK) de Windows para ejecutar las pruebas necesarias para tu tipo de controlador y categoría de dispositivo.

  4. Enviar para firmar . Después de que pasen las pruebas, envía los resultados de HLK junto con el paquete de controladores. Microsoft firmará el controlador con el certificado WHCP.

  5. Distribuye el controlador firmado . Una vez firmado, publica el controlador certificado por WHCP a través de Windows Update o de tu sitio web.

Importante: Los controladores firmados usando solo certificados cruzados sin certificación WHCP pueden estar bloqueados en sistemas con la directiva de controladores de Windows en modo de aplicación.

Advertencia: Deshabilitar esta característica reduce la seguridad del dispositivo. Te recomendamos mantenerla habilitada y trabajar con los editores de controladores para obtener controladores firmados por WHCP en su lugar.

La directiva de controlador de Windows es una directiva de integridad de código firmada almacenada en la partición del sistema EFI y protegida por los componentes de arranque anticipado de Windows. La desactivación de la función requiere los siguientes pasos manuales para que el software malintencionado que se ejecuta como administrador no pueda alterar la función:

Paso 1: Deshabilitar el arranque seguro

  1. Reinicia el equipo y escribe el menú de configuración de firmware de la UEFI (BIOS). Normalmente, puedes hacerlo presionando una tecla durante el arranque (por ejemplo , F2 , F10 , Del o Esc ; consulta la documentación del fabricante del dispositivo)

    1. Como alternativa, en Windows: ve a Configuración > Sistema > Recuperación > Inicio avanzado > Reiniciar ahora . A continuación, elige Solucionar problemas > Opciones avanzadas > Configuración de firmware de la UEFI > Reiniciar .

  2. En la configuración de firmware, busca la opción Arranque seguro (normalmente, en la pestaña Seguridad o Arranque ).

  3. Establece Arranque seguro en Deshabilitado .

  4. Guarda los cambios y sal de la configuración del firmware.

Paso 2: Eliminar los archivos de directiva de la partición del sistema EFI

1. Abra PowerShell como administrador .

2. Montar la partición del sistema EFI ejecutando:

mountvol S: /s

Puedes usar cualquier letra de unidad disponible en lugar de 'S:'.

3. Elimine el archivo de directiva de auditoría:

del S:\EFI\Microsoft\Boot\CiPolicies\Active\{784C4414-79F4-4C32-A6A5-F0FB42A51D0D}.cip

4. Si la política de cumplimiento también está presente, elimínela:

del S:\EFI\Microsoft\Boot\CiPolicies\Active\{8F9CB695-5D48-48D6-A329-7202B44607E3}.cip

5. Compruebe también y elimine las directivas del directorio del sistema de Windows:

del %windir%\System32\CodeIntegrity\CiPolicies\Active\{784C4414-79F4-4C32-A6A5-F0FB42A51D0D}.cip

del %windir%\System32\CodeIntegrity\CiPolicies\Active\{8F9CB695-5D48-48D6-A329-7202B44607E3}.cip

6. Desmonta la partición EFI:

mountvol S: /d

Paso 3: Reiniciar el equipo

Reinicia el dispositivo para que los cambios surtan efecto. Después del reinicio, la directiva ya no estará activa y se podrán cargar todos los controladores firmados, incluidos los que no tengan la certificación WHCP.

Paso 4: Volver a habilitar el arranque seguro

Después de quitar los archivos de directiva, vuelve a habilitar arranque seguro en la configuración del firmware de la UEFI para mantener otras protecciones de arranque seguro.

La característica se inicia en el modo de evaluación , donde registra pero no bloquea los controladores no notificados. Después de que el sistema cumpla los criterios de evaluación (tiempo de actividad suficiente y reinicios sin infracciones de directivas), la directiva pasa automáticamente al modo de obligatoriedad y se bloquearán los controladores que no estén firmados con WHCP. Esto puede hacer que los controladores que estaban trabajando anteriormente dejen de cargarse.

Actualmente, no hay ninguna manera de omitir la directiva para controladores individuales. Puedes deshabilitar la función por completo (consulta más arriba) o, preferiblemente, ponerte en contacto con el editor del controlador y pedirle que proporcione una versión firmada por WHCP de su controlador.

Esta característica se aplica solo a los controladores en modo kernel . Esta directiva no afecta a las aplicaciones en modo de usuario.

Puede comprobarlo ejecutando los siguientes comandos como administrador en PowerShell:

$evalPolicy = (citool -lp -json | ConvertFrom-Json).Policies | Where-Object { $_.PolicyID -eq "784c4414-79f4-4c32-a6a5-f0fb42a51d0d" }

$enforcedPolicy = (citool -lp -json | ConvertFrom-Json).Policies | Where-Object { $_.PolicyID -eq "8F9CB695-5D48-48D6-A329-7202B44607E3" }

if ($enforcedPolicy.IsEnforced -and $enforcedPolicy.IsAuthorized) { Write-Host "✅ The feature is in enforcement mode" -ForegroundColor Green }

elseif($evalPolicy.IsEnforced -and $evalPolicy.IsAuthorized) { Write-Host "✅ The feature is in evaluation mode" -ForegroundColor Green }

else { Write-Host "❌ The feature is not available on this system" -ForegroundColor Red }

Sí- Windows Server 2025 y plataformas de servidor más recientes. Sin embargo, en Windows Server, el requisito de sesión de arranque es de 2 reinicios (en comparación con 3 en las ediciones de cliente). Todos los demás criterios son los mismos.

Si restableces o reinstalas Windows, la característica se iniciará de nuevo en el modo de evaluación. Los contadores de evaluación se restablecerán y la transición a la aplicación comenzará de nuevo desde el principio.

¿Necesitas más ayuda?

Si sigues experimentando problemas con un controlador bloqueado, visita los foros de Microsoft Community o ponte en contacto con el soporte técnico de Microsoft .

Nos encantaría recibir tus comentarios sobre esta característica. Para compartir tu experiencia:

  1. En Windows, abre el Centro de opiniones (presiona Win + F ).

2. En el paso 2— Elige una categoría , selecciona Seguridad y privacidad > Control de aplicaciones .

¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.