HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links Subscribe free
← Back to Blog
Windows 11 DefenderASRAttack Surface ReductionWindows 11IntuneGroup PolicyEvent ViewerPowerShellEndpoint Security

Attack Surface Reduction rules broke a line-of-business app: reading the audit events, finding the rule, and the exclusion that does not work the way you think

IA
Imran Awan
21 August 2026

A line-of-business application stops working. Not with an error dialogue, not with a crash dump, not with anything in its own log file. The installer runs and reports success, then the executable it dropped simply refuses to start. Or a macro-driven Excel workbook that has run every month for six years does nothing at all when you click the button. Nobody changed the app. Somebody changed Defender.

This is what an Attack Surface Reduction rule in Block mode looks like from the user's chair. ASR - Attack Surface Reduction - is the highest-value hardening you can turn on in Microsoft Defender Antivirus for the least money. It is also the fastest way to lose a week of your life guessing which of nineteen rules killed which of four hundred applications, because the rules identify themselves by GUID and nothing else.

The short version

ASR rules are Microsoft Defender Antivirus behaviour blocks, each identified only by a GUID, each set to one of five documented modes: 0 Disabled, 1 Block, 2 Audit, 5 Not configured, 6 Warn. When one breaks an app, the evidence is event ID 1121 (block) or 1122 (audit) in the Microsoft-Windows-Windows Defender/Operational channel, and the ID field in that event is the rule GUID you have to look up. The fix is almost always a per-ASR-rule exclusion, not a global ASR exclusion and definitely not an antivirus exclusion - those are three separate mechanisms and several rules ignore the antivirus one entirely. Do the Audit-mode pass first; it costs you nothing and it is the only thing that turns this from guesswork into a list.

The problem: a rule blocks an app and never says which rule

Start with what ASR actually is, because the name is unhelpful.

Microsoft Defender Antivirus has a signature engine that asks "is this file known to be bad". ASR rules ask a completely different question: "is this behaviour one that malware overwhelmingly uses". Word spawning cmd.exe. A .js file downloading and launching an .exe. A process reading the memory of lsass.exe. Office writing an executable to disk. None of those are malicious in themselves. All of them are far more common in malware than in legitimate software.

So each ASR rule is a hard-coded behavioural block. There are nineteen documented rules. You cannot write your own. You turn each one on or off individually, and each one is addressed by a GUID.

That last part is the root of the pain. When a rule fires, Windows writes an event whose only rule identifier is that GUID. The app that died knows nothing. The user sees a toast that says an operation was blocked by their IT administrator, if they see anything at all. Your service desk gets "the finance tool is broken" and no thread to pull.

Context - ASR is an antivirus feature, not a licence feature. Microsoft documents ASR rules as a Microsoft Defender Antivirus capability available on any edition of Windows that includes Defender Antivirus, including Windows 11 Home. What Microsoft Defender for Endpoint and an E5-class subscription add is centralised management, reporting and alerting - the ASR rules report, advanced hunting, the device timeline. The enforcement itself is free and already on the box. If you have Windows 11 Pro and Intune Plan 1, you can deploy every rule; you just read the results out of Event Viewer instead of a portal.

The standard failure mode is not subtle, and it is not a Microsoft bug. It is this sequence:

  1. Someone reads that ASR rules are high-value and cheap. True.
  2. They create an Intune Attack surface reduction policy and set every rule to Block, because Block is obviously better than Audit.
  3. They assign it to All Devices.
  4. Over the following two weeks, between four and twelve applications break, in ways that never mention Defender.

Microsoft's own deployment guidance is explicit about the alternative. Enable the three standard protection rules in Block mode without extensive testing - those are documented as low-impact. Every other rule goes into Audit mode first, across a pilot ring, and you read the resulting events to find out what your estate actually does before you start blocking it. Audit mode logs exactly what Block mode would have done and blocks nothing.

Gotcha - a fleet with a third-party antivirus has ASR configured and doing nothing. Microsoft documents that ASR rules require Microsoft Defender Antivirus to be the primary antivirus, enabled and in Active mode, with real-time protection on. If Defender is in Passive mode, Passive with EDR in Block Mode, Limited Periodic Scanning, or Off, the rules do not enforce. Your Intune policy will still report as applied. Your compliance dashboard will still be green. Nothing is being blocked. Check AMRunningMode from Get-MpComputerStatus before you trust any ASR posture claim - it should say Normal.

Why it happens: modes, precedence, and every surface that carries the setting

The five modes, and the two numbers people get wrong

Every ASR rule is set to a numeric mode. Microsoft publishes five values. Two of them look interchangeable and are not.

ModeCodeWhat actually happens
Off / Disabled0Rule explicitly disabled. Microsoft warns this value can cause conflicts when different policies assign the same rule different modes.
Block / Activated1Rule enforces. The operation is blocked and event 1121 is written.
Audit2Rule evaluates as if in Block mode but takes no action. Event 1122 is written. This is the mode you deploy first.
Not configured5Rule not explicitly enabled. Functionally the same as Disabled, but without the conflict potential of 0.
Warn6Blocks, but shows the user a pop-up with an Unblock option that suppresses the block for 24 hours. Requires Defender platform 4.18.2008.9 and engine 1.1.17400.5 or later.

Note what is not in that table: 0 is not "not configured". If you have seen a runbook that says mode 0 means unconfigured, it is wrong, and the difference matters because 0 is a value Microsoft specifically flags as conflict-prone. Use 5 when you mean "leave it alone".

Warn mode has three sharp edges worth knowing before you lean on it. Two rules do not support it at all - the LSASS credential-stealing rule and the Office code-injection rule - and on any rule or Windows version that does not support Warn, the rule behaves as Block with no bypass. On unsupported Windows versions the same applies. And Microsoft documents that from platform version 4.18.26060, using the Unblock option requires administrator approval, which means Warn mode is no longer a self-service escape hatch for a standard user. Microsoft's own line on this is direct: the Unblock option is for temporary suppression and is not a durable exclusion mechanism.

The chain: what calls what, in order

Understanding where to look means understanding the order of events. From policy to blocked process, the flow is:

  1. A management channel writes the rule set. That is Intune, Configuration Manager, Group Policy, or a local Set-MpPreference call.
  2. The setting lands in the registry. Which key depends on the channel, and this is where most people go looking in the wrong place - see below.
  3. WinDefend, the Microsoft Defender Antivirus Service, reads the configuration. Its host process is MsMpEng.exe.
  4. The kernel-mode minifilter WdFilter.sys and the antimalware engine evaluate process creations, memory access and file writes against the enabled rules.
  5. If a rule matches and the mode is Block or Warn, the operation is denied. If the mode is Audit, it is allowed.
  6. Either way, Defender writes an event to the Microsoft-Windows-Windows Defender/Operational channel, and appends to MPLog on disk.

System files and DLLs in the flow

Only three of these matter day to day, but knowing all of them saves you from chasing a file in the wrong directory. The critical detail is that on a modern Windows 11 build the running Defender binaries do not live in C:\Program Files\Windows Defender - they live in a versioned platform folder under ProgramData that Defender updates itself monthly.

BinaryWhere it livesRole in the ASR flow
MsMpEng.exeVersioned platform folder under ProgramData; a stub also exists in C:\Program Files\Windows DefenderAntimalware Service Executable. Hosts the WinDefend service, holds the ASR rule state in memory, decides Block versus Audit.
MpSvc.dllVersioned platform folder under ProgramDataThe service DLL loaded by MsMpEng.exe. It is not in System32 on a current platform build - check the platform folder.
MpCmdRun.exeVersioned platform folder under ProgramDataCommand-line tool. MpCmdRun.exe -GetFiles produces the diagnostic cab you send to Microsoft support for an ASR case.
MpClient.dllC:\Program Files\Windows DefenderClient library used by Defender tooling and the PowerShell module.
WdFilter.sysC:\Windows\System32\drivers\File system minifilter. The kernel-mode component that actually intercepts the operations ASR rules evaluate.
WdBoot.sysC:\Windows\System32\drivers\Early-launch antimalware driver. Loads before other boot drivers.
WdNisDrv.sysC:\Windows\System32\drivers\Network inspection driver. Backs network protection, which shares the Operational log with ASR.

The current platform folder is the highest-numbered directory here:

C:\ProgramData\Microsoft\Windows Defender\Platform\<version>\

Services and scheduled tasks

One service carries ASR. The short name and the display name differ, and scripts that look for the display name on a non-English build will fail, so always match on the short name.

ItemNameExpected state
Service (short name)WinDefendRunning, Automatic. This is the one that matters.
Service (display name)Microsoft Defender Antivirus ServiceSame service. Do not key scripts on this string.
Scheduled task\Microsoft\Windows\Windows Defender\Windows Defender Cache MaintenanceReady
Scheduled task\Microsoft\Windows\Windows Defender\Windows Defender CleanupReady
Scheduled task\Microsoft\Windows\Windows Defender\Windows Defender VerificationReady

None of those scheduled tasks drives ASR evaluation - ASR is inline and real-time, not scheduled. They are listed because "is a scheduled task broken" is a reasonable question to rule out, and the answer here is that there is no ASR scheduled task to break.

The registry, and the key most people search first by mistake

Microsoft documents the Group Policy registry surface for ASR under this parent key. Everything in the table below hangs off it.

HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\Windows Defender Exploit Guard\ASR
Value or subkeyTypeWhat it holds
ExploitGuard_ASR_RulesDWORDThe documented policy value for Configure Attack Surface Reduction rules. Set when the GPO is Enabled.
ExploitGuard_ASR_ASROnlyExclusionsDWORDThe documented policy value for Exclude files and paths from Attack Surface Reduction rules.
Rules\SubkeyOne value per rule, value name = rule GUID, value data = mode code. Observed, not individually documented by Microsoft.
ASROnlyExclusions\SubkeyGlobal ASR-only exclusion paths, one value name per path. Observed.
ASROnlyPerRuleExclusions\SubkeyPer-rule exclusions. Observed. Requires 24H2 or later ADMX files to configure from GPMC.

The same tree exists without the Policies segment. That non-policy path is the effective, locally-written copy:

HKLM\SOFTWARE\Microsoft\Windows Defender\Windows Defender Exploit Guard\ASR

Do not build detection logic on the ASR registry keys. Two reasons. First, Microsoft documents the parent key and the two policy value names, but the per-GUID layout inside Rules\ is observed behaviour, not published contract - an update can change it. Second, and more practically: on an Intune-managed device the rules frequently arrive through the Policy CSP and the Rules\ subkey is empty, while the rules are demonstrably in force. The screenshot below is a real managed Windows 11 device with sixteen ASR rules active and nothing at all in that key. If your Intune detection script reads the registry, it will report an unhardened device. Read Get-MpPreference instead - that is Defender's own view of what it is enforcing.

Registry Editor
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender\Windows Defender Exploit Guard\ASR\Rules
Name           Type      Data
(this key has no values)
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\Defender
AttackSurfaceReductionRules_ProviderSet   REG_DWORD  0x00000001
AttackSurfaceReductionRules_WinningProvider  REG_SZ     {aaaaaaaa-0b0b-1c1c-2d2d-333333333333}
AttackSurfaceReductionOnlyExclusions_ProviderSet  REG_DWORD  0x00000001
// The rule modes themselves are in the provider subtree as one CSP string:
5BEB7EFE-FD9A-4556-801D-275E5FFC04CC=1|92E97FA1-2EDF-4476-BDD6-9DD0B4DDDC7B=2|...

That GUID=mode|GUID=mode string is the Policy CSP format, and it is worth recognising because it is what you type into an Intune custom profile OMA-URI, and it is what shows up when you need to prove which policy won a conflict.

Precedence, when two things configure the same rule

Microsoft documents a clear order, and it surprises people who assume cloud beats on-premises.

Within Intune, ASR rules additionally merge across policies. Non-conflicting settings from the endpoint security ASR policy, the older Endpoint protection configuration profile, and the Defender for Endpoint security baseline all combine into a superset for the device. Settings that genuinely conflict are held back - only the conflicting ones, not the whole profile.

How to verify: attributing a block to one rule and one process

This is the part that turns a week of guessing into twenty minutes. Three reads, in order: prerequisites, configured modes, then events.

Step 1: confirm ASR is even enforcing

Before you investigate a block, prove that blocks are possible. The command below reads Defender's own health state. AMRunningMode must be Normal and real-time protection must be True, or no ASR rule is doing anything regardless of its mode.

PowerShell - run elevated
Get-MpComputerStatus | Select-Object AMRunningMode, RealTimeProtectionEnabled, AMProductVersion, AMEngineVersion AMRunningMode : Normal RealTimeProtectionEnabled : True AMProductVersion : 4.18.26070.9 AMEngineVersion : 1.1.26070.7 # Healthy: AMRunningMode is Normal, so Defender is the ACTIVE antivirus and ASR enforces. # Broken: Passive, EDRBlock, SxSPassive or Off. ASR rules are configured but inert - # stop investigating the block, because there was no block. Something else broke the app. # Also broken: RealTimeProtectionEnabled False. Same conclusion.

Step 2: read the configured mode of every rule

Get-MpPreference exposes the rule state as two parallel arrays: AttackSurfaceReductionRules_Ids holds the GUIDs and AttackSurfaceReductionRules_Actions holds the mode codes, positionally matched. Microsoft publishes this one-liner to zip them back together. It is the single most useful ASR command there is.

PowerShell - run elevated
$p = Get-MpPreference 0..([math]::Min($p.AttackSurfaceReductionRules_Ids.Count,$p.AttackSurfaceReductionRules_Actions.Count)-1) | ForEach-Object { [pscustomobject]@{ Id = $p.AttackSurfaceReductionRules_Ids[$_]; Action = $p.AttackSurfaceReductionRules_Actions[$_] } } | Format-Table -AutoSize Id Action -- ------ 01443614-cd74-433a-b99e-2ecdc07bfc25 2 56a863a9-875e-4185-98a7-b882c64b5ce5 1 9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2 1 d4f940ab-401b-4efc-aadc-ad5f3c50688a 1 # Read the Action column against the mode table: 1 = Block, 2 = Audit, 6 = Warn. # Healthy for a phased rollout: mostly 2s, with 1s only on the standard protection rules. # Suspicious: every row a 1, and no 1122 events anywhere. Nobody ran an audit pass. # Broken: the two arrays have different Counts. Never zip them blindly if so - # you will assign the wrong mode to the wrong rule and chase the wrong app.

You now have GUIDs and modes. What you do not have is names. That is the next section's table.

Step 3: the Event Viewer catalog

All ASR events land in one channel. State it once, because the path is long:

Microsoft-Windows-Windows Defender/Operational (Event Viewer: Applications and Services Logs > Microsoft > Windows > Windows Defender > Operational)

Here is the full documented catalog for that channel, across all four attack surface reduction capabilities that share it. Getting these attributed correctly matters, because two of them are commonly misfiled as ASR rule events when they are not.

Event IDCapabilityMeaning
1121ASR rulesRule fired in Block mode. The operation was denied.
1122ASR rulesRule fired in Audit mode. Nothing was blocked. This is your rollout evidence.
1129ASR rulesUser overrode a block in Warn mode.
5007All DefenderDefender configuration changed. Shows old and new registry value - the audit trail for "who changed the rule".
1123Controlled folder accessBlocked controlled folder access event. Not an ASR rule.
1124Controlled folder accessAudited controlled folder access event.
1127Controlled folder accessBlocked sector write block event.
1128Controlled folder accessAudited sector write block event.
1125Network protectionNetwork protection fired in audit mode. Not an ASR rule event.
1126Network protectionNetwork protection fired in block mode. Not an ASR rule event.

Gotcha - 1125 and 1126 are not ASR rule events, and Microsoft's own docs disagree with themselves here. A great many runbooks list "the 1121/1122/1125/1126 family" as the ASR event set. Microsoft's dedicated event reference is unambiguous: ASR rules are 1121, 1122, 1129 and 5007, while 1125 and 1126 are network protection audit and block. To make it worse, the "Modes for ASR rules" table on the ASR overview page currently points readers at "Event IDs 1122, 1125, 1132, and 1134" for audit detections - IDs that do not appear in the event reference at all. Filter on 1121, 1122, 1129 and 5007. If you see 1125 or 1126 while chasing a broken app, you are looking at a network block, which is a different investigation.

Rather than clicking through filters every time, import Microsoft's published custom view. It targets exactly the four ASR IDs and covers both the Operational and WHC channels.

<QueryList> <Query Id="0" Path="Microsoft-Windows-Windows Defender/Operational"> <Select Path="Microsoft-Windows-Windows Defender/Operational">*[System[(EventID=1121 or EventID=1122 or EventID=1129 or EventID=5007)]]</Select> <Select Path="Microsoft-Windows-Windows Defender/WHC">*[System[(EventID=1121 or EventID=1122 or EventID=1129 or EventID=5007)]]</Select> </Query> </QueryList>

Save that as asr-events.xml, then in Event Viewer choose Action then Import Custom View... and pick the file.

Step 4: read the event, and do not misread the two path fields

Here is a genuine 1121 from a managed Windows 11 device, identifiers left intact because there are none - every path is a Windows system binary.

Event Viewer - Microsoft-Windows-Windows Defender/Operational
Level: Warning  |  Event ID: 1121  |  Source: Windows Defender
Microsoft Defender Exploit Guard has blocked an operation that is not allowed by your IT administrator.
For more information please contact your IT administrator.
  ID: 9E6C4E1F-7D60-472F-BA1A-A39EF669E4B2
  Detection time: 2026-08-21T19:21:57.561Z
  User: NT AUTHORITY\LOCAL SERVICE
  Path: C:\Windows\System32\svchost.exe
  Process Name: C:\Windows\System32\lsass.exe
  Target Commandline:
  Parent Commandline:
  Involved File:
  Inheritance Flags: 0x00000000
  Security intelligence Version: 1.457.275.0
// ID is the rule GUID. Look it up in the reference table below.
// 9E6C4E1F... is the LSASS credential-stealing rule.

Three things to take from that event.

First, ID is the rule GUID. That is your only rule identifier, and it is why you need the reference table.

Second, the two path fields are not what most people assume. Path here is svchost.exe and Process Name is lsass.exe. For this rule, Path is the process the rule acted on and Process Name is the other party in the relationship. Microsoft does not publish a field dictionary for these events, so treat the direction as something to confirm per rule rather than a rule of thumb - but do not reflexively build an exclusion around whichever path you saw first.

Third, this specific event is noise, and Microsoft says so. The LSASS rule blocks access to LSASS process memory, not process execution. When it blocks svchost.exe, that means svchost was denied a memory read, not stopped from running. Microsoft's guidance is explicit that this rule produces a large volume of audit events almost all of which are safe to ignore, that it suppresses alerts for friendly processes, and that an app which merely enumerates LSASS with no functional impact does not need an exclusion. Fifty-three of these in a fortnight on a healthy device is normal.

The complete rule reference: GUID to name to behaviour

These are the nineteen documented rules. GUIDs are copied verbatim from Microsoft's published tables - never retype one from memory, and never accept one from a blog without checking it, because a single wrong character silently produces a rule that does nothing.

The three standard protection rules first. Microsoft recommends these in Block mode without extensive testing.

RuleGUIDWhat it blocks
Block abuse of exploited vulnerable signed drivers (Device)56a863a9-875e-4185-98a7-b882c64b5ce5Apps saving vulnerable signed drivers to disk. Does not stop drivers already present from loading.
Block credential stealing from the Windows local security authority subsystem9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2Access to lsass.exe process memory. No Warn mode. Redundant if LSA protection and Credential Guard are on. Very noisy.
Block persistence through WMI event subscriptione6db77e5-3df2-4cf1-b95a-636979351e5bMalware abusing the WMI repository and event model for persistence. Test hard if you run Configuration Manager - its client leans on WMI.

Then the sixteen other rules, which Microsoft says to test in Audit mode first.

RuleGUIDWhat it blocks
Block Adobe Reader from creating child processes7674ba52-37eb-4a4f-a9a1-f0f9a1619a2cAdobe Reader spawning any process.
Block all Office applications from creating child processesd4f940ab-401b-4efc-aadc-ad5f3c50688aWord, Excel, PowerPoint, OneNote and Access spawning child processes. Enforced only if Office is installed under Program Files. The classic LOB breaker.
Block executable content from email client and webmailbe9ba2d9-53ea-4cdc-84e5-9b1eeee46550Executables, scripts and archives propagating from Outlook and popular webmail.
Block executable files from running unless they meet a prevalence, age, or trusted list criterion01443614-cd74-433a-b99e-2ecdc07bfc25Unknown or low-prevalence executables. Requires cloud protection. The rule that eats freshly built in-house installers.
Block execution of potentially obfuscated scripts5beb7efe-fd9a-4556-801d-275e5ffc04ccScripts with obfuscation characteristics, PowerShell included. Requires cloud protection and AMSI.
Block JavaScript or VBScript from launching downloaded executable contentd3e037e1-3eb8-44c8-a917-57927947596dScript downloaders launching fetched payloads.
Block Office applications from creating executable content3b576869-a4ec-4529-8536-b80a7769e899Office writing executable content to disk, and execution of untrusted files saved by macros. Not affected by Office install location.
Block Office applications from injecting code into other processes75668c1f-73b5-4cf0-bb93-3ecf5cb7cc84Code injection from Word, Excel, OneNote, PowerPoint. No Warn mode. Needs an Office restart to take effect.
Block Office communication application from creating child processes26190899-1602-49e8-8b27-eb1d0a1ce869Outlook spawning child processes, including rules-and-forms injection abuse.
Block process creations originating from PSExec and WMI commandsd1e49aac-8f56-4280-b9ba-993a6d77406cProcesses created via PsExec and WMI. Do not enable by another channel if you use Configuration Manager.
Block rebooting machine in Safe Mode33ddedf1-c6e0-47cb-833e-de6133960387bcdedit and bootcfg restarting Windows into Safe Mode. WinRE still reaches Safe Mode manually.
Block untrusted and unsigned processes that run from USBb2b3f03d-6a65-4f7b-a9c7-1c7ef74a9ba4Unsigned or untrusted executables running from removable media, SD cards included. Copying is still allowed.
Block use of copied or impersonated system toolsc0033c00-d16d-4114-a5a0-dc9b3a7d2cebExecutables identified as duplicates or imposters of Windows system tools.
Block Webshell creation for Serversa8f5898e-1dc8-49a9-9878-85004b8a61e6Web shell script creation on Exchange servers. Server-only. Leave Not configured if you manage ASR from the Defender portal.
Block Win32 API calls from Office macros92e97fa1-2edf-4476-bdd6-9dd0b4dddc7bVBA macros calling Win32 APIs. Client-only. Requires AMSI.
Use advanced protection against ransomwarec1db55ab-c21a-4637-bb3f-a12568109d35Files that resemble ransomware by client and cloud heuristics - including files with no positive reputation yet. Requires cloud protection.

Every rule except the vulnerable-signed-drivers rule lists Microsoft Defender Antivirus as a dependency, and three rules additionally require cloud-delivered protection to be on: the prevalence rule, the obfuscated-scripts rule, and the advanced ransomware protection rule. If cloud protection is blocked at your proxy, those three do not work.

If you have Defender for Endpoint Plan 2

Everything above works on any Windows edition. With Plan 2 you can skip Event Viewer entirely and query the fleet. Microsoft's documented advanced hunting pattern for audited detections is:

DeviceEvents | where ActionType startswith "Asr" | where ActionType endswith "Audited"

Every rule has a documented pair of action types, Asr...Audited and Asr...Blocked, which means you can attribute a detection to a rule without touching a GUID. Without Plan 2, Windows Event Forwarding gets you the same coverage from the local event channel.

Log files, when the event log is not enough

Defender keeps its own verbose logs on disk. Microsoft's documented route to them is MpCmdRun.exe -GetFiles, which packages everything into a cab:

C:\ProgramData\Microsoft\Windows Defender\Support\MpSupportFiles.cab

Three files inside it matter for an ASR case, and Microsoft names them: MPOperationalEvents.txt holds the same content as the Operational event log, MPRegistry.txt is a dump of every current Defender configuration value, and MPLog.txt is the verbose action log. The same support folder also holds rolling MPLog-<timestamp>.log and MPDetection-<timestamp>.log files you can read without generating a cab at all. Search MPRegistry.txt for AttackSurfaceReduction to see the rule list exactly as Defender parsed it - that is the definitive answer to "did my policy actually land".

Gotcha - the Operational log is circular and small. On a default Windows 11 install the channel is 16 MB in circular mode. On a device with a noisy rule in Audit mode, that can wrap in days. If you plan an Audit-mode pilot and intend to read the results a month later, either raise the channel size first, or forward the events, or accept that your evidence window is much shorter than your pilot. "No 1122 events" can mean "the rule never fired" or "the rule fired ten thousand times and the log wrapped". Those are opposite conclusions.

The fix: three exclusion models, and the one that does not work how you think

You have a rule GUID and a process path. Now you need the app to work without switching the rule off. There are three exclusion mechanisms, they are frequently spoken of as one thing, and they behave differently.

The three mechanisms

1. Microsoft Defender Antivirus exclusions. The ordinary ExclusionPath, ExclusionProcess and ExclusionExtension lists. These are not honoured by every ASR rule. Microsoft publishes a per-rule table of which rules respect antivirus file and folder exclusions and which ignore them. All ASR rules do honour antivirus process exclusions.

2. Global ASR-only exclusions. The AttackSurfaceReductionOnlyExclusions setting. These apply to every ASR rule on the device. Every configuration method supports them.

3. Per-ASR-rule exclusions. Exclusions scoped to one rule GUID. Only three channels can set these: Group Policy (and its registry equivalent), Intune endpoint security policies, and endpoint security policies in the Microsoft Defender portal. Configuration Manager and the plain Policy CSP cannot.

A global ASR exclusion is a much bigger hole than it looks. Excluding C:\LOBApp\ globally to fix one rule also exempts that folder from the ransomware heuristic, the prevalence check, the obfuscated-script rule, the USB rule and every other rule on the device. Microsoft's own wording is that excluded files are allowed to run and no reports or events about the file are recorded - so you also lose the telemetry that would have told you the folder went bad. Worse, Intune's documentation notes that because devices receive a superset of ASR settings from all applicable policies, a global exclusion in any one policy applies to every ASR setting targeting that device. Reach for the per-rule exclusion.

Here is the honouring matrix for the rules most likely to break a line-of-business app. This is the table that explains why an antivirus exclusion someone added last Tuesday changed nothing.

RuleHonours AV file and folder exclusionsHonours global and per-rule ASR exclusions
Block credential stealing from the Windows local security authority subsystemNoYes
Block persistence through WMI event subscriptionNoYes
Block Adobe Reader from creating child processesNoYes
Block Office applications from creating executable contentNoYes
Block Office applications from injecting code into other processesNoYes
Block Office communication application from creating child processesNoYes
Block process creations originating from PSExec and WMI commandsNoYes
Block all Office applications from creating child processesYesYes
Block executable files from running unless they meet a prevalence, age, or trusted list criterionYesYes
Use advanced protection against ransomwareYesYes

Read the pattern. Seven of the rules that most commonly break real software ignore antivirus file and folder exclusions completely. If your remediation habit is "add an AV exclusion and move on", it will appear to work about half the time and you will never know which half.

Tip - exclusions beat downgrading the rule, and Warn beats Off. Microsoft's stated preference is a rule exclusion over turning a rule off or dropping it back to Audit. Where the rule supports it, Warn mode limits the disruption while you work out the exclusion, because the user can carry on. Just remember Warn is temporary by design - from platform 4.18.26060 the Unblock option needs administrator approval, and the bypass lasts 24 hours. Land the per-rule exclusion and take the rule back to Block.

Configuring it in Intune - the click path

ASR rules live under Endpoint security, not Configuration. The profile name matters because there are several ASR profiles and only one carries the rules.

intune.microsoft.comEndpoint securityAttack surface reductionAttack Surface Reduction Rules
  1. Sign in to the Microsoft Intune admin center at https://intune.microsoft.com.
  2. Select Endpoint security in the left navigation.
  3. Select Attack surface reduction.
  4. Select Create Policy.
  5. For Platform, select Windows.
  6. For Profile, select Attack Surface Reduction Rules. Do not pick Device Control, Exploit Protection or App and browser isolation - those are different profiles in the same policy type.
  7. Select Create, name the policy, then select Next.
  8. On Configuration settings, set each rule you want to Audit for the first pass. Set only the three standard protection rules to Block.
  9. As soon as a rule is set to anything other than Not configured, an ASR Only Per Rule Exclusions box appears directly under that rule. This is where a per-rule exclusion goes. Enter a folder path such as C:\LOBApp or a full path and filename such as %ProgramFiles%\LOBApp\app1.exe.
  10. Leave Attack Surface Reduction Only Exclusions - the global list, further down the page - empty unless you genuinely mean every rule. You can also bulk load it from a CSV whose single header row reads AttackSurfaceReductionOnlyExclusions.
  11. Select Next, then on Assignments add a Microsoft Entra device group. Defender for Endpoint management supports device objects only; targeting user groups is not supported.
  12. Select Next, review, then Create. Microsoft notes ASR rules become active within minutes.

If you manage endpoint security policies from the Defender portal instead, the same profile and the same settings are available at https://security.microsoft.com/policy-inventory on the Windows tab.

Configuring it in Group Policy - the click path

The GPO path is deep and the folder is named after Exploit Guard, not ASR, which is why people cannot find it.

Computer configurationAdministrative templatesWindows componentsMicrosoft Defender AntivirusMicrosoft Defender Exploit GuardAttack Surface Reduction
  1. Open the Group Policy Management Console on your management workstation, or gpedit.msc for a single device.
  2. Expand Group Policy Objects, right-click your GPO and select Edit.
  3. Navigate to Computer configuration then Administrative templates then Windows components then Microsoft Defender Antivirus then Microsoft Defender Exploit Guard then Attack Surface Reduction. On templates older than Windows 10 2004 the folder reads Windows Defender Antivirus instead of Microsoft - same location.
  4. Open Configure Attack Surface Reduction rules, select Enabled, then select Show... next to Set the state for each ASR rule.
  5. For each rule, enter the rule GUID as the Value name and the mode code as the Value - 0, 1, 2, 5 or 6. Repeat per rule, then OK.
  6. For a global exclusion, open Exclude files and paths from Attack surface reduction rules, select Enabled and Show..., then enter the path as the Value name and 0 as the Value.
  7. For a per-rule exclusion, open Apply a list of exclusions to specific attack surface reduction (ASR) rules, select Enabled and Show..., then enter the rule GUID as the Value name and the exclusions as the Value, separated by > characters - for example C:\LOBApp\app1.exe>C:\LOBApp\helper.exe.

Gotcha - the per-rule exclusion setting may not be in your GPMC, and quotes silently poison values. Microsoft documents that Apply a list of exclusions to specific attack surface reduction (ASR) rules requires the 24H2 or later Administrative Templates in your Central Store. If you do not see it, your ADMX files are old - the setting exists in Windows, you just cannot reach it from that console. Separately, Microsoft states that quotation marks, leading spaces, trailing spaces and extra characters are not supported in any ASR-related Group Policy value. A GUID pasted with a stray quote produces a rule that silently does nothing, and the troubleshooting guide specifically tells you to check for this.

Configuring it in PowerShell, and why it is the last resort

PowerShell supports every rule and every exclusion type, and it is the right tool for a lab device. It is the wrong tool for a managed fleet, because local settings have the lowest precedence and any policy channel overwrites them at startup. The documented syntax:

Add-MpPreference -AttackSurfaceReductionRules_Ids <guid>,<guid> -AttackSurfaceReductionRules_Actions AuditMode,Enabled Add-MpPreference -AttackSurfaceReductionOnlyExclusions "C:\LOBApp\app1.exe"

The action parameter accepts 0/Disabled, 1/Enabled for Block, 2/AuditMode, 5/NotConfigured and 6/Warn. Use Add-MpPreference to append. Set-MpPreference overwrites the entire list - both the rule set and the exclusion set - which is how a well-meant one-line fix wipes eighteen other rules. Remove-MpPreference removes specific entries.

Two exclusion behaviours that catch everyone

First, Microsoft documents that exclusions apply only when the application or service starts. Add an exclusion for a service that is already running and it keeps triggering detections until you restart it. If you add an exclusion and nothing changes, restart the process before you conclude the exclusion is wrong.

Second, wildcards and environment variables work, with limits. Wildcards cannot define a drive letter. To cross several nested folders you need repeated \*\ segments. And Microsoft warns against using user environment variables in folder and process exclusions - only system variables, or variables that resolve for the SYSTEM account, expand correctly. A path built on %USERPROFILE% will not do what you expect.

One more, if your fleet uses it: if Disable local admin merge is set to true - through Intune, the Defender CSP DisableLocalAdminMerge, the Defender portal, or the Configure local administrator merge behavior for lists GPO - then per-rule exclusions and local ASR exclusions do not apply at all. That is Microsoft's documented behaviour and it is the single most confusing failure in this whole area, because the exclusion appears in policy and does nothing on the device.

Proof it worked: a real report from a managed device

Everything above is a set of reads you would otherwise do by hand across three consoles. The companion script does them in one pass: it maps every configured GUID to its friendly name, decodes the mode, inventories the exclusions across all three mechanisms, flags rules sitting in Block mode with no retained Audit evidence, and groups recent ASR events by rule and by blocked process. It is strictly read-only - it calls Get-MpPreference, Get-MpComputerStatus, Get-Service, Get-WinEvent and registry reads, and never Set-MpPreference, Add-MpPreference or a registry write.

This is a genuine run on a managed Windows 11 device, with the hostname replaced. Nothing else is edited.

PowerShell - run elevated - Get-AsrRuleStateReport.ps1 -EventDays 60
Device : CONTOSO-1234 PS engine : 5.1.26100.9168 (Desktop) Elevation : elevated (required, confirmed) STEP 1 - ASR prerequisites Defender running mode : Normal Real-time protection : True Tamper protection : True Platform (AMProductVersion): 4.18.26070.9 Service WinDefend : Microsoft Defender Antivirus Service / Running / Automatic Prerequisites look satisfied: Defender is the active antivirus with real-time protection on. STEP 2 - Configured ASR rule modes AttackSurfaceReductionRules_Ids : 16 entries AttackSurfaceReductionRules_Actions : 16 entries Rules in Block or Warn mode : 8 Rules in Audit mode : 8 Rules inactive or absent : 3 of 19 documented rules # Healthy: the two array counts match. If they did not, the script aborts rather than # zip them and assign the wrong mode to the wrong rule. # 3 of 19 absent is normal - two are server-only and one is rarely deployed.

The interesting half is what it found in the exclusion and event sections. Two findings here are the whole reason the script exists.

PowerShell - run elevated - continued
STEP 3 - Exclusions in force (a) Global ASR-only exclusions - Get-MpPreference AttackSurfaceReductionOnlyExclusions HIDDEN: Defender reports that administrators are not allowed to view exclusions on this device. That is a policy decision, not an empty list. Raw value returned: N/A: Administrators are not allowed to view exclusions # THIS is why "fail loud" matters. A naive script prints an empty list here and you # conclude there are no exclusions. There may be dozens. Read them from the policy. (b) Registry surface for ASR exclusions - policy path and effective path absent : HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender\...\ASR\Rules present, no values : HKLM:\SOFTWARE\Microsoft\Windows Defender\...\ASR\Rules READ FAILED : HKLM:\SOFTWARE\Microsoft\Windows Defender\...\ASR\ASROnlyExclusions -- Requested registry access is not allowed. # Sixteen rules are enforcing and the Rules key is EMPTY. The rules arrived by CSP. # And the exclusion keys are ACL-protected even from an elevated session - reported # as READ FAILED, never as "no exclusions found". STEP 4 and 5 - ASR events Log mode : Circular Max size : 16 MB Records held : 15221 Requested window : last 60 day(s) Events read : 53 Oldest ASR event actually retained : 2026-08-10 08:51:00 # Asked for 60 days, got 11. The circular log wrapped. Say so, do not pretend. Blocks Audits Bypass Rule ------ ------ ------ ---- 53 0 0 Block credential stealing from the Windows local security authority... Count Ids ActedOn Other Rule ----- --- ------- ----- ---- 53 1121 C:\Windows\System32\svchost.exe C:\Windows\System32\lsass.exe Block credential... # Healthy noise, not an incident. This rule blocks LSASS memory ACCESS, not execution, # and Microsoft documents svchost hits here as usually safe to ignore. No exclusion needed.

Read the last block carefully, because it is the shape of a correct diagnosis. Fifty-three blocks, one rule, one process, and the right answer is to do nothing. The script tells you the rule name so you can reach that conclusion in a minute instead of opening a ticket with the svchost owner.

And the Block-without-Audit check on this device flagged all eight enforcing rules as having no retained 1122 event - which, read naively, looks like eight rules that skipped the audit pass. It is not, and the script says so in its own output: the log only retains eleven days, three of those are standard protection rules that Microsoft says can go straight to Block, and audit events from a rollout months ago are long gone. A heuristic that admits it is a heuristic is worth having. One that quietly reports a number is not.

The script lives at Windows-11-Scripts\defender-asr-rules-audit-block-reference\Get-AsrRuleStateReport.ps1. It needs no modules installed - Get-MpPreference and Get-MpComputerStatus ship in the box - and it runs on both Windows PowerShell 5.1 and PowerShell 7. It refuses to run non-elevated, on purpose, because the Defender registry keys and the Operational log are access-controlled and a non-elevated run produces a clean-looking report that is simply wrong.

References

Microsoft-official:

Community deep-dives, both fetched and confirmed on topic:

AuthorPostWhy it is worth reading
Rudy OomsThe Magnificent ASR RulesEnd-to-end walk through enabling, deploying and troubleshooting ASR across Intune, PowerShell and the Settings Catalog.
Rudy OomsInterview with the ASR rulesA real case where the prevalence rule blocked a Win32 app install during Autopilot - the exact failure this post is about.
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-AsrRuleStateReport.ps1 — Read-only report of every documented Microsoft Defender Attack Surface Reduction (ASR)
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
Controlled folder access blocked your backup software: reading…
Microsoft Defender's controlled folder access blocks untrusted processes writing to…
Windows 11
Exploit Protection Mitigations: The Per-Process Hardening Nobody…
Exploit protection is the in-box successor to EMET, with twenty-two documented…
Windows 11
SMB signing became mandatory and your NAS stopped working:…
Windows 11 24H2 and later require SMB signing, refuse insecure guest logons and ship…