HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links Subscribe free
← Back to Blog
Windows 11 Windows 11Smart App ControlApp Control for BusinessWDACCode IntegrityIntuneApplication ControlSmartScreenEndpoint SecurityPowerShell

Smart App Control: the Windows 11 security feature you cannot switch on, and why it is off on every managed device

IA
Imran Awan
21 August 2026

Open Windows Security on any Intune-managed Windows 11 device in your fleet. Go to App & browser control. You will probably see a section called Smart App Control, and it will say Off. Nobody on your team turned it off. There is no Intune policy that turned it off. It turned itself off, on purpose, because your device is managed.

Smart App Control (SAC) is the most misunderstood security feature in Windows 11. It is genuinely strong protection. It is also almost impossible to run on managed hardware, for reasons Microsoft documents but rarely puts in one place. And the folklore around it, that switching it off is a permanent one-way door needing a clean install of Windows, is now contradicted by Microsoft's own pages, which disagree with each other. This post walks the whole feature: what it actually evaluates, its three states, the exact registry surface, the event log, the shared engine it borrows from App Control for Business, and what you should deploy on managed devices instead.

The short version

Smart App Control has three documented states, Off, On (enforcement) and Evaluation, held in VerifiedAndReputablePolicyState under HKLM\SYSTEM\CurrentControlSet\Control\CI\Policy. Microsoft documents that it starts in Evaluation and switches itself off within 48 hours on enterprise-managed devices unless the user turns it on first. There is no Group Policy setting and no Intune or CSP setting that can turn it on, and the only documented administrative lever turns it off, so the absence of a management surface is the real story rather than the old clean-install folklore. Because Microsoft built Smart App Control entirely on App Control for Business, the correct managed-device answer is to take the shipped SmartAppControl.xml and deploy it as your own App Control base policy.

The problem: a security feature you cannot switch on

Let us start with what Smart App Control actually is, because most people have only seen the toggle.

Smart App Control is an application-trust feature introduced in Windows 11 version 22H2. Microsoft describes it as combining its app intelligence services with Windows code integrity features. In plain English, it decides whether a program is allowed to run at the moment Windows tries to load it.

The decision chain is short and worth memorising. It runs in this order, every time a binary loads.

  1. Windows asks Microsoft's cloud app intelligence service for a verdict on the file.
  2. If the service predicts the file is safe, it runs.
  3. If the service predicts the file is malicious or potentially unwanted, it is blocked.
  4. If the service cannot make a confident prediction, Windows falls back to the signature.
  5. If the file carries a valid signature from a certificate authority in the Microsoft Trusted Root Program, it runs.
  6. If the file is unsigned, or the signature is invalid, it is considered untrusted and blocked.

Microsoft's own summary of the net effect is blunt: malware, potentially unwanted apps and unknown, unsigned code are blocked by default. That is a genuinely strong posture. It is also why it never survives on a developer workstation.

Two acronyms before we go further, since both appear constantly in this feature area. WDAC is Windows Defender Application Control, the old name for what Microsoft now calls App Control for Business. ISG is the Intelligent Security Graph, Microsoft's cloud reputation service. Smart App Control uses the ISG for step one above, and App Control for Business can use exactly the same service.

Now the problem. On managed hardware, Smart App Control is off, and you have no supported way to turn it on at scale. Not a Group Policy setting. Not an Intune Settings Catalog setting. Not a Configuration Service Provider (CSP) OMA-URI. The one documented administrative lever Microsoft publishes for this feature exists purely to turn it off more decisively than it turns itself off.

Context: this is by design, not a bug. Microsoft's guidance treats Smart App Control as a consumer and small-business feature. The App Control for Business overview says Smart App Control "brings robust application control to consumers and to some small businesses with simpler app portfolios". Managed enterprises are explicitly expected to use App Control for Business instead. Once you read it that way, the missing management surface stops being mysterious.

Why it happens: a one-way switch and a 48-hour timer

There are three separate mechanisms working against you here. They get conflated constantly, so let us separate them.

Mechanism one: the three states, and which transitions are allowed

Smart App Control has exactly three documented states. You can see them in the Windows Security app at Settings > Privacy & Security > Windows Security > App and Browser Control > Smart App Control settings.

State in the UIWhat it meansWhere it comes from
OnEnforcement mode. Apps cannot run unless the app intelligence service recognises them or they are signed with a trusted certificate.Registry value 1
EvaluationSmart App Control runs in the background observing activity, deciding whether the device is a good fit for the protection it offers.Registry value 2
OffSmart App Control is not running on the device.Registry value 0

Microsoft's developer testing article states the transition rule directly. Configuring Smart App Control to Off or On is a one-way operation, and you cannot change modes using Windows Settings unless the current setting is Evaluation. Read that carefully. Evaluation is the only state you can freely leave and choose your destination from. Once you land on Off or On through the UI, the UI stops offering you the other options.

Mechanism two: evaluation mode decides against you

Evaluation mode is not a countdown to enforcement. It is an assessment, and it can conclude that you fail.

Microsoft says evaluation mode judges "whether the device is a good fit for the protection it offers based on the variety of apps installed and used on the device". The consumer FAQ is more candid about the outcome. It says that some legitimate tasks corporate users and developers do regularly would be a poor experience with Smart App Control running, and that "if we detect that you're one of those users, we'll automatically turn Smart App Control off so you can work with fewer interruptions".

For managed devices there is a documented number attached, and it is short. The App Control for Business overview states that Smart App Control starts in evaluation mode and switches off within 48 hours for enterprise-managed devices unless the user turns it on first.

Gotcha: the 48-hour window belongs to the user, not to you. The documented escape hatch is "unless the user turns it on first". There is no admin-side equivalent. If you wanted Smart App Control enforced on a managed device, your only documented route would be asking every end user to click On in Windows Security within two days of enrolment, before the evaluation logic switches it off. That is not a deployment plan. Treat it as confirmation that the feature is not meant for you.

The consumer FAQ lists the full set of documented reasons Smart App Control ends up off. Any one of these is enough.

That last one matters more than it looks. Smart App Control depends on optional diagnostic data. Plenty of organisations disable optional diagnostic data as a privacy baseline, and doing so removes Smart App Control from the table permanently on those devices. Microsoft's stated remedy is to reset the PC or reinstall Windows and select Send optional diagnostic data during setup.

Mechanism three: the folklore, and where the docs now disagree

The well-known claim about Smart App Control is that turning it off is irreversible, and the only route back is a clean install. That claim came from Microsoft, and part of it is still on Microsoft's site. But the three relevant pages no longer say the same thing, and if you are writing internal guidance you need to know that.

Microsoft pageWhat it says about getting back onDoc date seen
Smart App Control overview (developer docs)Smart App Control "is designed to protect a device for its entire lifetime. As such, it can only be enabled on a clean install" of a Windows version containing the feature. A note adds that resetting the device counts as a clean install.Updated Nov 2025
Test App Signatures with Smart App ControlSetting it to Off or On "is a one-way operation. You can't change modes by using Windows Settings unless the current setting is Evaluation."Updated Oct 2025
What is Smart App Control (consumer FAQ)"Recent Windows updates allow Smart App Control to be re-enabled without requiring a clean installation."Live at time of writing

Do not repeat the clean-install line as settled fact, and do not force the state with the registry on a production device. The consumer FAQ now says re-enabling no longer needs a clean install, while the developer overview still says a clean install is the only route. Microsoft's own testing article is explicit that the registry route is "for testing purposes only" and that editing Smart App Control this way "could compromise the protection it provides". The App Control for Business page adds a matching caution: changing VerifiedAndReputablePolicyState directly can leave the system in a state where nearly all unsigned or untrusted apps are blocked. On a fleet device, a botched forced state means an unbootable-feeling machine where almost nothing launches. The safe conclusion for managed devices is unchanged regardless of which page you believe: there is still no policy that turns it on.

Why the engine is shared, and why that is the good news

Here is the part that redeems the whole story. Smart App Control is not a parallel security stack. Microsoft states that it built Smart App Control "entirely upon App Control for Business", and that the service Smart App Control uses to predict what code is safe to run "is also available in App Control for Business and called the Intelligent Security Graph (ISG)".

You can see the shared engine on disk. Both features are evaluated by the same code integrity components, and Smart App Control's policy is a real App Control policy with a real policy ID, sitting in the same folder as every other code integrity policy on the machine.

Binary or fileRole in the flow
C:\Windows\System32\ci.dllThe code integrity engine itself. This is the component that evaluates a loading binary against every active policy, Smart App Control's included.
C:\Windows\System32\wldp.dllWindows Lockdown Policy. Smart App Control's policy carries the rule option Enabled:Conditional Windows Lockdown Policy, which is what makes it a conditional lockdown policy rather than a plain App Control policy.
C:\Windows\System32\CiTool.exeThe supported command-line tool for listing and refreshing code integrity policies. Ships in Windows 11 version 22H2 and later, and Windows Server 2025.
C:\Windows\System32\smartscreen.exeThe Microsoft Defender SmartScreen host process. A separate feature, but relevant, as covered below.
C:\Windows\schemas\CodeIntegrity\ExamplePolicies\SmartAppControl.xmlThe shipped Smart App Control policy in XML form. This is the file you actually want.
C:\Windows\System32\CodeIntegrity\CiPolicies\Active\Where active compiled policies live as .cip files. Microsoft documents the Smart App Control evaluation policy as {1283AC0F-FFF1-49AE-ADA1-8A933130CAD6}.cip.

Tip: the feature you cannot enable ships you its policy for free. SmartAppControl.xml is the exact circle of trust Smart App Control enforces, expressed as an App Control for Business policy you are allowed to deploy by policy. Microsoft explicitly recommends it as the starting point for most organisations, and the same policy is bundled with the App Control Wizard as the "Signed and Reputable mode" template. You do not need Smart App Control. You need its policy.

How to verify: registry, CiTool, Event Viewer, files

Four independent sources of truth. Check at least two, because the registry value and the actually-enforced policy can disagree if someone has been forcing states.

Surface 1: the registry

Everything about Smart App Control's state lives under one parent key. The value names are long, so here it is once, on its own.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CI\Policy
Value nameType and documented valuesStatus
VerifiedAndReputablePolicyStateREG_DWORD. 0 = Off, 1 = Enforce, 2 = Evaluation. Microsoft's developer article labels 1 as "On (Enforcement)".Documented. This is the one that matters.
SAC_PreviousStateREG_DWORD. Observed as 0xffffffff on a device that has never had Smart App Control on.Observed, undocumented. Do not build detection on it.
EmodePolicyRequiredREG_DWORD. Observed as 0.Observed, undocumented.
SkuPolicyRequiredREG_DWORD. Observed as 0.Observed, undocumented.

Two more values are documented, but only inside Microsoft's developer testing article, and only in the context of forcing a mode offline. They sit under different parents.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CI\Protected -> VerifiedAndReputablePolicyStateMinValueSeen HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender -> SacLearningModeSwitch

Gotcha: reading the value is not the same as reading the state. VerifiedAndReputablePolicyState is the requested state. It only becomes the real state after a policy refresh. Microsoft documents that after you change the value you must run CiTool.exe -r for the change to take effect. If you are writing detection logic, always corroborate the registry value against the enforced policy list, which is what the companion script does.

Here is the Registry Editor view on a managed device where Smart App Control turned itself off.

Registry Editor
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CI\Policy
EmodePolicyRequired               REG_DWORD    0x00000000 (0)
SkuPolicyRequired                REG_DWORD    0x00000000 (0)
VerifiedAndReputablePolicyState  REG_DWORD    0x00000000 (0)  ← Off
SAC_PreviousState                REG_DWORD    0xffffffff (4294967295)
Illustrative panel reproducing a genuine read from a managed Windows 11 Enterprise device.

Surface 2: CiTool, the supported way to see what is actually enforced

The registry says what was asked for. CiTool.exe says what is loaded. Microsoft documents the check by friendly name: Smart App Control is in evaluation mode if the friendly name is VerifiedAndReputableDesktopEvaluation and "Is Currently Enforced" is true, and in enforcement mode if the friendly name is VerifiedAndReputableDesktop and "Is Currently Enforced" is true.

The command below lists every code integrity policy on the device as JSON and filters to the two Smart App Control base policies. It only reads.

PowerShell - run elevated
(CiTool -lp -json | ConvertFrom-Json).Policies | Where-Object { $_.FriendlyName -like 'VerifiedAndReputable*' } | Select-Object FriendlyName, IsEnforced, IsAuthorized, IsSystemPolicy # Lists the two Smart App Control base policies and whether either is actually active. # HEALTHY on a managed device: both rows present, IsEnforced=False. That is Off, as expected. # SAC ON: VerifiedAndReputableDesktop shows IsEnforced=True. # SAC EVALUATING: VerifiedAndReputableDesktopEvaluation shows IsEnforced=True. # BROKEN: no rows at all means this build does not carry the policies. Do not read that as Off.

Read the output as a pair. If the registry value says 0 and neither policy is enforced, the two agree and the device is genuinely off. If they disagree, somebody has written the registry value without refreshing, and the machine is in the inconsistent state Microsoft warns about.

Surface 3: Event Viewer

Smart App Control does not get a private event channel. It logs into the same code integrity channel as App Control for Business, which is exactly what you would expect from a shared engine. The channel, stated once:

Applications and Services Logs\Microsoft\Windows\CodeIntegrity\Operational

Microsoft documents two event IDs as specifically Smart App Control's, plus a wider catalog you will need when you move to App Control for Business.

Event IDDocumented meaningWhy you care
3076The main block event for audit mode policies. The file would have been blocked if the policy were enforced.Microsoft states Smart App Control logs evaluation-mode events with 3076. This is your dry run.
3077The main block event for enforced policies. The file did not pass the policy and was blocked.Microsoft states Smart App Control logs enforcement-mode events with 3077. This is a real user-visible block.
3089Signature information for a blocked or audit-blocked file. One event per signature. Unsigned files produce a single event with a total signature count of 0.Correlate with 3076 or 3077 using the Correlation ActivityID to see why a signature failed.
3033 / 3034The file did not meet policy requirements. 3034 is the audit-mode equivalent. Often a revoked signature or an expired Lifetime Signing certificate.The classic "it was signed, why was it blocked" answer.
3090 / 3091 / 3092Reputation and managed installer diagnostics. 3090 means allowed purely on ISG or managed installer. 3092 is the enforcement-mode denial.The only way to see the ISG verdict. Details carry SmartlockerEnabled and PassesSmartlocker.
3099A policy has been loaded. Details include the policy options.Confirms which policies actually activated at boot or on refresh.
3095 / 3097 / 3100The policy cannot be refreshed and needs a reboot, cannot be refreshed, or refreshed but failed to activate.Your first stop when CiTool -r appears to do nothing.

Scripts, installers and COM objects are logged elsewhere. Microsoft documents a second channel, Applications and Services Logs\Microsoft\Windows\AppLocker\MSI and Script, carrying 8028 (audit) and 8029 (enforced) for script hosts, 8036 for blocked COM objects, 8037 for an allowed script, 8039 and 8040 for packaged apps, and 8038 for script signature information.

Gotcha: an empty CodeIntegrity log during evaluation mode is expected, not reassuring. Microsoft documents that the default policy Smart App Control uses in evaluation mode does not log audit events in the CodeIntegrity Operational log, deliberately, to keep the log small on consumer devices. So zero 3076 events while in Evaluation tells you nothing about whether enforcement would break your apps. If you actually need that data, Microsoft publishes audit-enabled variants of the policy at https://aka.ms/sacauditpolicies. Separately, the log records blocked files only. Microsoft states it does not log which software installations failed or why, so an installer that dies silently has to be traced back through the individual 3076 and 3077 file blocks.

Event Viewer
Applications and Services Logs\Microsoft\Windows\CodeIntegrity\Operational
Information  3099  Refreshed and activated Code Integrity policy {aaaaaaaa-0b0b-1c1c-2d2d-333333333333} Microsoft Windows Driver Policy. Status 0x0
Information  3099  Refreshed and activated Code Integrity policy {aaaaaaaa-0b0b-1c1c-2d2d-444444444444} Microsoft Windows Endpoint Security Policy. Status 0x0
Information  3116  Signature information for Code Integrity policy ID {aaaaaaaa-0b0b-1c1c-2d2d-333333333333}.  ← observed but NOT in Microsoft's published event ID table
Illustrative panel. Reproduces genuine event text from a managed device with policy GUIDs replaced by Microsoft placeholder GUIDs. Note that no VerifiedAndReputable policy appears in the 3099 activations, which is what Off looks like from the log.

That 3116 row is worth flagging honestly. It appears on a live device with the message "Signature information for Code Integrity policy ID", but it is not in Microsoft's published event ID reference, which stops at 3114. Report it if you see it, and do not build alerting on it, because an undocumented event ID can change in any update.

Surface 4: services, tasks and log files

There is no service named after Smart App Control, and no scheduled task under \Microsoft\Windows\ that drives it. Say that plainly to anyone who asks you to restart the Smart App Control service. Code integrity evaluation happens in the kernel through ci.dll, not in a user-mode service you can bounce. The surrounding cast, however, is real.

Service (short / display)Role and expected state
AppIDSvc / Application IdentityEvaluates AppLocker and App Control identity rules for scripts, installers and packaged apps. Manual start. Frequently Stopped on a device with no App Control policy deployed, which is normal.
applockerfltr / Smartlocker Filter DriverThe filter driver behind reputation-based trust. The name matches the documented SmartlockerEnabled and PassesSmartlocker fields in ISG diagnostic events, which is a nice confirmation that "Smartlocker" is the internal name for the ISG path.
WinDefend / Microsoft Defender Antivirus ServicePerforms the reputation checks. Expected Running.
DiagTrack / Connected User Experiences and TelemetryCarries optional diagnostic data, which Microsoft documents as a Smart App Control prerequisite. Expected Running if you ever want Smart App Control to be eligible.
wscsvc / Security CenterSurfaces the Smart App Control section in the Windows Security app. Expected Running.

Three scheduled tasks sit under \Microsoft\Windows\AppID\ and support the identity and certificate side of application control: PolicyConverter, VerifiedPublisherCertStoreCheck and EDP Policy Manager. None of them are Smart App Control's, and none of them need touching.

On log files, the honest answer is that this feature has no text log. There is no .log file under C:\Windows\Logs for Smart App Control. Its state lives in the registry, its policies live as .cip binaries under C:\Windows\System32\CodeIntegrity\CiPolicies\Active\, and its decisions live in the event log. If you were hoping to grep a file, the closest equivalent is filtering the CodeIntegrity Operational channel for IDs 3076 and 3077, which is what a healthy versus broken read looks like: 3077 events naming a business application are broken, and no 3077 events at all with the policy enforced is healthy.

Surface 5: how SmartScreen fits, and why it is not the same thing

People conflate Smart App Control with Microsoft Defender SmartScreen constantly. They are different features with different verdicts. SmartScreen warns and lets the user click through. Smart App Control blocks, and Microsoft states there is currently no way to bypass its protection for individual apps.

The connection is visible inside the shipped policy. SmartAppControl.xml contains a Windows Lockdown Policy settings block with entries named ShellSmartscreenSuppressed, BrowserSmartscreenSuppressed and ISGSmartscreenTrustSuppressed. In other words, when the lockdown policy is active, the SmartScreen prompts are suppressed, because a hard block has replaced the warning. Those individual value names are observed inside a Microsoft-shipped file rather than documented on Microsoft Learn, so treat them as descriptive, not as a supported configuration surface.

SmartScreen, unlike Smart App Control, is fully manageable. It has real Group Policy settings and real CSP settings.

SettingGroup Policy path and registryCSP OMA-URI leaf
Configure Windows Defender SmartScreenComputer Configuration > Administrative Templates > Windows Components > Windows Defender SmartScreen > Explorer. Writes EnableSmartScreen under Software\Policies\Microsoft\Windows\System.SmartScreen/EnableSmartScreenInShell
Configure App Install ControlSame Explorer node. Writes ConfigureAppInstallControlEnabled under Software\Policies\Microsoft\Windows Defender\SmartScreen.SmartScreen/EnableAppInstallControl
Prevent override for filesAn element of the Configure Windows Defender SmartScreen setting.SmartScreen/PreventOverrideForFilesInShell

That is the entire SmartScreen area of the Policy CSP: three settings. None of them is Smart App Control. This is the honest verification the topic demands, and the absence is the finding.

The fix: deploy App Control for Business instead

Stop trying to enable Smart App Control. Deploy its policy under a name you control.

Step 1: state the negative findings out loud in your documentation

Before the how-to, record the two absences, because they will be questioned.

There is no Group Policy setting for Smart App Control, and no Intune or CSP setting for it either. The Device Guard node in Group Policy contains a setting for deploying App Control for Business policies, not for Smart App Control. The SmartScreen area of the Policy CSP contains exactly three settings, none of which touch Smart App Control. Intune's Endpoint security node offers App Control for Business and Managed installer, not Smart App Control. The only documented administrative action Microsoft publishes for Smart App Control itself is setting VerifiedAndReputablePolicyState to 0 and running CiTool.exe -r, which turns it off proactively across an organisation's endpoints. If a vendor or a colleague claims an Intune toggle exists, ask them for the CSP path.

Step 2: build your base policy from the shipped Smart App Control policy

Microsoft recommends this policy as the ideal starter for most App Control deployments. There is one mandatory edit. Because the shipped file is a conditional Windows lockdown policy, you must remove that option before it can work as an ordinary App Control policy.

PowerShell - run elevated
Get-Content "$env:windir\schemas\CodeIntegrity\ExamplePolicies\SmartAppControl.xml" | Select-String '<Option>' # Read-only. Lists the rule options in the shipped Smart App Control policy. # HEALTHY: you will see Enabled:UMCI, Enabled:Intelligent Security Graph Authorization, # Enabled:Allow Supplemental Policies and Enabled:Conditional Windows Lockdown Policy. # The last one is the line you must remove from YOUR copy before deploying it. # BROKEN: file not found means this build does not ship the example policies folder.

Copy the file somewhere else first and edit the copy. Never edit the file in C:\Windows\schemas. Microsoft's documented requirement is to remove the option Enabled:Conditional Windows Lockdown Policy so the policy is ready for use as an App Control for Business policy. The easier route for most people is the App Control Wizard from https://aka.ms/appcontrolwizard, where the same policy appears as the Signed and Reputable mode base template, already prepared.

Tip: deploy in audit mode first, always. Microsoft's guidance is that organisations new to App Control succeed by starting permissive and hardening over time. Audit mode logs every file that would have been blocked into event 3076 without blocking anything, which is the dry run Smart App Control's evaluation mode refuses to give you on a managed device.

Step 3: deploy it with Intune, click by click

First, if you deploy applications with Intune, turn the Intune Management Extension into a managed installer. Everything Intune installs afterwards is then tagged as trusted automatically.

intune.microsoft.comEndpoint securityApp Control for BusinessManaged installer
  1. Sign in to the Microsoft Intune admin center.
  2. Go to Endpoint security, then App Control for Business.
  3. Select the Managed installer tab, then select Create.
  4. On Basics, enter a Name and a Description.
  5. On Settings, set Enable Intune Managed Extension as Managed Installer to Enabled, which is the default.
  6. On Scope tags, add any scope tags you use, then select Next.
  7. On Assignments, include your device groups. Managed installer policy applies to the device scope only, so user targeting will not behave the way you expect.
  8. On Review + create, select Create. Allow up to 10 minutes for the policy to appear and up to 30 minutes for delivery.

Now the App Control policy itself.

intune.microsoft.comEndpoint securityApp Control for BusinessCreate Policy
  1. Go to Endpoint security, then App Control for Business.
  2. Select the App Control for Business tab, then select Create Policy.
  3. On Basics, enter a Name and Description.
  4. On Configuration settings, choose a Configuration settings format. Pick Enter xml data to upload your edited Smart App Control policy. Pick Built-in controls if you want the simple path.
  5. If you chose Built-in controls, set Enable trust of Windows components and store apps. Choose Audit only for your first ring.
  6. Under Select additional options for trusting apps, tick Trust apps with a good reputation to use the same ISG reputation service Smart App Control uses, and Trust apps from managed installers to trust everything you deploy through Intune.
  7. On Scope tags, add scope tags, then select Next.
  8. On Assignments, select your pilot device group. App Control applies to the device scope only.
  9. On Review + create, select Create.

Under the covers this uses the ApplicationControl CSP. Worth knowing: when you use built-in controls, the resulting base policy takes one of four fixed policy IDs depending on which combination of the built-in options you picked, so two differently-named policies with the same options share a policy ID.

Step 4: deploy it with Group Policy, click by click

If you still have domain-joined devices, Group Policy can deploy an App Control policy. Note the limitation before you start.

gpmc.mscComputer ConfigurationAdministrative TemplatesSystemDevice Guard
  1. On a machine with the Remote Server Administration Tools installed, run GPMC.MSC.
  2. Right-click the target organisational unit and select Create a GPO in this domain, and Link it here.
  3. Name the GPO, then right-click it and select Edit to open the Group Policy Management Editor.
  4. Navigate to Computer Configuration > Administrative Templates > System > Device Guard.
  5. Right-click Deploy App Control for Business and select Edit.
  6. Select Enabled, then specify the deployment path to your compiled policy. This can be a local path or a UNC path all computer accounts can read.
  7. Close the editor and restart the target machine. Whatever you named your binary, it is converted to SiPolicy.p7b on the client.

Gotcha: the Group Policy route is a legacy path. Microsoft documents that Group Policy deployment of App Control policies supports single-policy format only, the pre-1903 schema, and explicitly recommends an alternative deployment method for Windows 10 1903 and later or Windows 11. There is a second documented hazard: on devices with memory integrity enabled, do not activate new signed base policies via Group Policy. Deploy those by script and activate with a restart instead. For a modern fleet, use Intune.

Step 5: expect Defender to change state, and do not open a ticket about it

One documented side effect surprises people. When Smart App Control is on, or when you enable App Control with the ISG option, Microsoft Defender Antivirus is set to passive or hybrid mode on systems using a non-Microsoft antivirus for real-time protection. Microsoft states plainly that this is expected behaviour, not a bug or a sign of misconfiguration. Defender handles the reputation checks while your chosen antivirus keeps real-time protection.

Proof it worked: a real read-only run

The companion script for this post reports the Smart App Control state on a device with the numeric value translated, says whether it is in evaluation, checks whether App Control policies are also present, and prints a plain-English verdict on whether Smart App Control can be re-enabled. It is read-only, ASCII-only, parses cleanly on both Windows PowerShell 5.1 and PowerShell 7, and aborts with exit code 1 rather than printing a misleading clean result if a read fails.

The output below is a genuine run on a managed Windows 11 Enterprise device, trimmed for length, with no identifiers to redact.

PowerShell - Get-SmartAppControlState.ps1, real run
PS C:\> .\Get-SmartAppControlState.ps1 Device build : 10.0.26200.0 PowerShell : 5.1.26100.9168 Elevated : True == Smart App Control state (documented registry value) == VerifiedAndReputablePolicyState 0x0 (0) [documented] Translated state Off [0=Off, 1=Enforce, 2=Evaluation] In evaluation mode False # HEALTHY on a managed device: Off. Exactly what the 48-hour rule predicts. Undocumented companion values (report only, never build detection on these): SAC_PreviousState 0xffffffff (-1) [OBSERVED, UNDOCUMENTED] EmodePolicyRequired 0x0 (0) [OBSERVED, UNDOCUMENTED] == App Control policies on this system (CiTool --list-policies) == Policies reported 14 Currently enforced 4 VerifiedAndReputableDesktop IsEnforced=False IsAuthorized=False VerifiedAndReputableDesktopEvaluation IsEnforced=False IsAuthorized=False CiTool view of Smart App Control Off (policies present but not enforced) # HEALTHY: registry and CiTool agree. Both policies shipped, neither enforced. # BROKEN would be registry=1 with IsEnforced=False - a write without CiTool -r. Non-platform (admin-deployed) App Control policies: None. No App Control for Business policy has been deployed to this device. # THIS is the real gap. SAC is off AND nothing replaced it. Zero app control. == CodeIntegrity Operational event log == 3076 audit / evaluation-mode blocks 0 [would have been blocked] 3077 enforcement-mode blocks 0 [actually blocked] 3099 policy loaded 28 # Zero blocks here is meaningless while SAC is Off - nothing is evaluating. Completed. All attempted reads succeeded.

Read that output as a story, not a status. Smart App Control is off, exactly as documented for an enterprise-managed device. The registry and the enforced-policy list agree, so nobody has left the machine half-configured. And the line that should actually prompt action is the one saying no App Control for Business policy has been deployed, because that means this device has no application control at all, only antivirus. That is the gap the shipped SmartAppControl.xml exists to close.

To confirm that the reverse case is detectable, force the failure path rather than trusting a clean result. Run the script without elevation. The CiTool and event log reads are denied, the script names each denied read, exits 1, and prints no zero counts, which is the fail-loud behaviour you want before you wire anything into a detection script.

References

Community deep dive

AuthorPostWhy it is worth reading
Peter van der WoudeUsing Smart App Control as starting point for Windows Defender Application Control (February 2023)Walks the exact conversion this post recommends: take the shipped SmartAppControl.xml, compile it, and distribute it through Intune. Confirms the enterprise-managed auto-off behaviour independently.

The companion read-only script for this post lives at github.com/Imran76Awan/Windows-11-Scripts under smart-app-control-vs-wdac-signing.

PowerShell — companion script

Download it from Imran76Awan/Windows-11-Scripts — no sign-in required. It is read-only: it reports and never changes a device or anything in Intune. Validate it in your own environment before relying on the output.

Get-SmartAppControlState.ps1 — Reports the Smart App Control (SAC) state on the local Windows 11 device, whether it is in
View all scripts on GitHub
Was this post helpful?
React below — no account needed
Share this post
LinkedIn X / Twitter Reddit Bluesky

More from EndpointWeekly

Windows 11
WDAC or AppLocker: which application control to actually deploy,…
Windows has two application control stacks with overlapping purpose and different…
Windows 11
Attack Surface Reduction rules broke a line-of-business app:…
An ASR rule in Block mode kills an app and tells you nothing but a GUID. Here is the…
Windows 11
Controlled folder access blocked your backup software: reading…
Microsoft Defender's controlled folder access blocks untrusted processes writing to…