Share via

Deploying Windows Defender Application Control (WDAC)

CommandX 20 Reputation points
2026-03-01T10:55:20.27+00:00

Hello, I trying to deploy Windows Defender Application Control with Secure Boot On to authorize my Custom Kernel Mode Certificate (The certificate also present in Firmware Trusted db), it worked well without any issue with CodeIntegrity, however when I turn Secure Boot Off, My Policy get Ignored and Windows show a Blue Screen on Boot Instead saying C:\Windows\System32\drivers\xyz.sys is not trusted, I tried to deploy the Policy with C:\Windows\System32\CodeIntegrity\SiPolicy.p7b (Deployed via Script as shown here "https://learn.microsoft.com/en-us/windows/security/application-security/application-control/app-control-for-business/deployment/deploy-appcontrol-policies-with-script") however no luck with Secure Boot Off, any help will be appreciated

SKU : Windows 10 IoT Enterprise LTSC 2021

EDIT : When Secure Boot is Enabled I apply it to \EFI\Microsoft\Boot\SiPolicy.p7b which is working, and ignored when Secure Boot is Disabled

Windows for business | Windows Client for IT Pros | Devices and deployment | Other
0 comments No comments
{count} votes

Answer accepted by question author
  1. Quinnie Quoc 9,595 Reputation points Independent Advisor
    2026-03-01T11:29:16.7266667+00:00

    Dear CommandX,

    Thank you for sharing the details regarding the deployment of Windows Defender Application Control with Secure Boot enabled and the challenges encountered when Secure Boot is disabled. The behavior described indicates that the policy is being enforced only when Secure Boot is active, as Secure Boot ensures that the Code Integrity policy is loaded from the EFI partition. When Secure Boot is disabled, enforcement of the policy from \EFI\Microsoft\Boot\SiPolicy.p7b is bypassed, which results in the driver not being trusted.

    A recommended approach is to maintain Secure Boot enabled when deploying custom kernel mode certificates, as this guarantees that the Code Integrity policy is validated during boot. If Secure Boot must be disabled, the policy in C:\Windows\System32\CodeIntegrity\SiPolicy.p7b may not be applied consistently, and additional configuration or validation through Microsoft Support may be required. Providing logs and details of the certificate configuration through the Microsoft Support portal will allow engineers to analyze the environment more thoroughly.

    If this answer resolves your concern, please click Accept the answer so that confirmation is received.

    Thank you so much!

    Best regards,

    QQ.


2 additional answers

Sort by: Most helpful
  1. Quinnie Quoc 9,595 Reputation points Independent Advisor
    2026-03-01T12:32:37.8266667+00:00

    Dear CommandX,

    Thank you for the follow-up regarding the deployment of Windows Defender Application Control with Secure Boot disabled. The current design of Windows does not provide a supported method to enforce the \EFI\Microsoft\Boot\SiPolicy.p7b policy when Secure Boot is turned off. Enforcement of Code Integrity policies from the EFI partition is tied to Secure Boot being active, which ensures that the policy is validated during the boot process. Without Secure Boot, the system bypasses this enforcement, resulting in the driver not being trusted. The recommended path is to keep Secure Boot enabled when deploying custom kernel mode certificates, as this guarantees proper validation and enforcement of the policy. For scenarios where Secure Boot must remain disabled, consistent enforcement of the policy cannot be guaranteed, and no supported workaround exists.

    I hope my update answer is useful for you. Thank you for your vote!

    Best regards,

    QQ

    1 person found this answer helpful.
    0 comments No comments

  2. Q&A Assist
    2026-03-01T10:55:38.3833333+00:00
    AI generated content. This question contains an answer created with AI from Q&A Assist. Learn more

    Windows Defender Application Control (WDAC) behavior depends on whether the policy is UEFI‑locked (Secure Boot–enforced) or not.

    Key points from the provided context:

    1. Secure Boot and UEFI‑locked policies
      • Secure Boot is a UEFI firmware feature that verifies signatures of boot-critical components and enforces policies that are signed by keys in the Secure Boot Key Exchange Key (KEK) list and trusted certificates in the firmware DB/DBX.
      • A Secure Boot configuration policy must be signed by a private key that chains to a public key in the KEK list; BootMgr verifies this signature against KEK before applying the policy.
      • When Secure Boot is on and the WDAC/UEFI policy is correctly signed and trusted, the policy is enforced early in boot and can authorize kernel‑mode code such as drivers.
      References:
      • Secure Boot description and key hierarchy: Platform Key (PK), KEK, Allowed DB, Disallowed DBX. Any entity with a KEK can update DB/DBX, and the Microsoft CA in KEK allows Microsoft‑signed policies to be enforced on all Secure Boot systems.
      • Secure Boot protection ends after the Windows kernel is loaded; then other protections (like ELAM and WDAC/Code Integrity) take over, but the UEFI‑locked policy itself is tied to Secure Boot.
    2. WDAC audit vs enforcement policies and UEFI lock
      • The guidance for VBS‑related revocation policies and WDAC notes two types of policies:
        • A Microsoft‑signed revocation/mitigation policy (SkuSiPolicy.p7b) that is UEFI‑locked and enforced via Secure Boot.
        • An audit policy (SiPolicy.p7b) that is explicitly described as “will not be UEFI locked. External boot media and recovery media do not need to be updated before applying the audit policy.”
      • Code Integrity evaluates binaries against the policy and logs violations when in audit mode; in enforcement mode, non‑trusted binaries are blocked.
    3. Behavior when Secure Boot is off
      • UEFI‑locked policies (those enforced via Secure Boot and signed against KEK/firmware trust) depend on Secure Boot being enabled. When Secure Boot is disabled, those UEFI‑locked policies are not applied by the firmware/BootMgr chain.
      • Non‑UEFI‑locked WDAC policies (like the audit policy example) can still be evaluated by Windows Code Integrity after the kernel loads, but they do not provide the same early‑boot enforcement as a Secure Boot policy.

    Given the scenario:

    • With Secure Boot on:
      • The custom kernel‑mode certificate is present in the firmware DB and trusted.
      • The WDAC/Code Integrity policy is enforced under Secure Boot, so the driver xyz.sys signed with that certificate is allowed and the system boots normally.
    • With Secure Boot off:
      • Any UEFI‑locked Secure Boot configuration or WDAC policy that relies on KEK/DB trust is no longer applied.
      • If there is still a WDAC/Code Integrity enforcement policy active that does not trust xyz.sys (or if the driver is evaluated under a different policy path), Code Integrity can block the driver and cause a boot‑time failure (blue screen indicating the driver is not trusted).
      • Deploying SiPolicy.p7b into C:\Windows\System32\CodeIntegrity alone will not reproduce the same behavior as a Secure Boot–enforced, UEFI‑locked policy when Secure Boot is disabled, because the early‑boot UEFI policy enforcement is no longer in effect.

    From the context, the supported pattern is:

    • Use a Microsoft‑signed, UEFI‑locked policy (for example, SkuSiPolicy.p7b in the VBS mitigation guidance) when Secure Boot is enabled and early‑boot enforcement is required.
    • Use a non‑UEFI‑locked audit policy (SiPolicy.p7b) to detect compatibility issues and log violations, not to rely on it for the same Secure Boot–level enforcement when Secure Boot is off.

    Implications for this environment (Windows 10 IoT Enterprise LTSC 2021):

    • The behavior observed—policy working with Secure Boot on and being effectively ignored or changed when Secure Boot is off, leading to a “driver not trusted” blue screen—is consistent with the design where Secure Boot controls which UEFI‑locked policies are applied.
    • To maintain consistent trust behavior for xyz.sys without Secure Boot, a non‑UEFI‑locked WDAC policy that explicitly trusts the signing certificate or the driver would need to be active and correctly deployed for the non‑Secure‑Boot scenario. The context provided, however, only documents the general behavior of Secure Boot, UEFI‑locked policies, and audit vs enforcement, not the full deployment steps for such a configuration.

    References:

    0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.