A Practical Guide to Group Policy (GPO) — How It Works, Confirming Application, and Choosing Between GPO and Intune

· Updated: · · Windows, Group Policy, Active Directory, Intune, PC Management, PowerShell, Information Systems

Revision history (first version, published Aug 1, 2026)
First published
Cite this article(DOI (registered archive): 10.5281/zenodo.22170839)

The DOIs below refer to previously archived versions and may not match the current text. Use this page’s URL to reference the current text.

Go Komura (2026). A Practical Guide to Group Policy (GPO) — How It Works, Confirming Application, and Choosing Between GPO and Intune. KomuraSoft LLC. https://comcomponent.com/en/blog/group-policy-practical-guide/

DOI (registered archive)
10.5281/zenodo.22170839
DOI (last registered version)
10.5281/zenodo.22170840

“I changed the GPO but nothing happened.” “I ran gpupdate and the setting still did not change.” “The app runs on my development machine but not on the PCs at the customer site.” Problems like these become much easier to investigate once you separate which GPOs are in scope, which setting wins, and when processing happened.

Group Policy is the mechanism that distributes and manages Windows settings across an organization. Being told that something is “distributed via GPO” does not tell you what is actually in effect on a given PC or for a given user. You have to compare the configuration on the distributing side with the result on the receiving side.

This article is a practical introduction for IT staff at small and midsize businesses who have inherited an AD environment, and for developers who deploy business apps to domain-joined PCs. It covers the order of application, when settings take effect, triage with gpresult and the event log, ADMX and the Central Store, and how to choose between GPO and Intune. The explanations are based on primary sources as of August 2026.

Start From What You Are Running Into

What you are running into What to check first Where to read
You inherited GPO or AD administration The difference between local and domain, and between computer and user Group Policy basics
A setting you fixed locally reverts The LSDOU processing order, and which GPO wins a conflict Precedence and inheritance
It applies to everyone except certain people or PCs Filter permissions, and when a group change takes effect Security filtering
Nothing changes even with gpupdate /force Whether the DC is reachable, and settings that need foreground processing When settings take effect
You cannot tell where it is failing Read the applied GPOs, the denied GPOs, and the winning GPO in that order Confirming application and triage
The value remains after you stopped configuring the policy Whether it writes to a dedicated policy key or outside one Relationship to the registry
Different management machines show different settings ADMX/ADML and which store the tools reference Template management
You are considering managing off-site devices or adding Intune The device’s identity foundation and location, and who owns each setting Decision table for management methods
The business app fails only at the customer site Execution policy, firewall, and the account the app runs as What developers should check

If this is your first read, pick up the terminology in Chapter 2, understand the mechanism in Chapters 3 and 4, and then move on to the verification steps in Chapter 5. If you are in the middle of an investigation, start from Chapter 5 and go back to the explanations of precedence and timing as the results require.

1. The Bottom Line First

“Which Setting Wins” and “When It Arrives” Are Separate Problems

Group Policy is processed in the order local, site, domain, OU (LSDOU), and when the same setting conflicts, the last write wins. The local GPO is the weakest layer. That said, Block Inheritance and Enforced change this default flow.1

Application comes in two forms: foreground processing at startup and at sign-in, and background refresh at a default interval of roughly 90 minutes plus a random offset of 0 to 30 minutes. The background refresh on domain controllers defaults to 5 minutes. gpupdate /force reapplies every setting; it is not an all-purpose command that also applies, on the spot, settings that are only ever processed at sign-in or at restart.23

Check the Result That Arrived Before You Keep Changing Things

Triage starts from the RSoP report produced by gpresult /h. Check the applied GPOs, the denied GPOs and their reasons, and the winning GPO for each setting. When you need to dig into processing failures or delays, use the GroupPolicy operational log.45

Administrative template settings are, as a rule, written to registry locations such as Software\Policies, and policy-aware apps give those values precedence over their own settings. “Not Configured” writes no value at all. Some settings do write outside the dedicated keys, however, so when a value remains behind, check where it was written.6

Align the Management Method With the Assumptions Your App Depends On

In a domain, ADMX definitions are consolidated into the PolicyDefinitions Central Store in SYSVOL. It exists so that GPMC references one common set of templates.7

Choose between GPO and Intune based on the device’s identity foundation and where it is used. In a hybrid environment, avoid configuring the same setting twice and decide who owns each area. Group Policy analytics is useful for sorting settings before a migration.89

For developers too, GPO is part of the environment specification. Settings that change an app’s assumptions, such as the execution policy, firewall local rule merging, and proxy and drive configuration, are distributed centrally. When something “fails only at the customer site,” confirm those assumptions with the report and the actual values.1011

In the diagram a solid line marks a relation that always holds and a dashed line marks a conditional one (the conditions are given per relation on the detail page). The full list of relations (29 in total, with evidence and certainty) and the definitions of the main concepts are collected on the knowledge map detail page (in Japanese). Data: JSON-LD / Turtle

2. What Group Policy Is — Local GPOs and Domain GPOs

Group Policy is the mechanism by which an administrator centrally defines Windows settings and applies them to target computers and users. A bundle of settings is called a GPO (Group Policy Object).

Start by separating “the local GPO managed inside the PC itself” from “the domain GPO distributed from AD.”

Where Settings Live: Local or Domain

  Local GPO Domain GPO
Editing tool gpedit.msc (Local Group Policy Editor) GPMC (Group Policy Management Console) plus the Group Policy Management Editor
Storage location The PC itself. There is one for the computer, but for users you can also create multiple local GPOs (MLGPO) split by administrators, non-administrators, and specific users12 Active Directory (distributed by linking to sites, domains, and OUs)
Scope That PC only Every computer and user under the link target
Precedence Weakest (overwritten by domain GPOs)1 Stronger than local. Among domain GPOs, decided by the link target and the link order
Typical use Standalone settings on workgroup PCs and test machines Distributing and enforcing the organization’s standard settings

A workgroup PC, one that is not domain-joined, processes only the local GPO.1 In other words, when people say a machine is “managed by GPO,” in practice they almost always mean a domain GPO.

GPOs processed by a workgroup PC and by a domain-joined PCA workgroup PC processes only the local GPO, while a domain-joined PC processes the domain GPOs distributed from Active Directory in addition to the local GPOWorkgroupDomain-joinedHow is the PC joined?Processes the local GPO onlyLocal plus domain GPOsGPOs in practice are almost all domain GPOs

Figure 1: A workgroup PC processes only the local GPO, while a domain-joined PC also processes domain GPOs.

What Settings Target: The PC or the User

Whatever the GPO, its contents fall into two broad branches.

  • Computer Configuration: settings that take effect for anyone who signs in to that PC. Applied at startup.
  • User Configuration: settings that take effect for that user no matter which PC they sign in to. Applied at sign-in.

The axis of “is this setting tied to the PC or to the person” shows up consistently in the order of application and in confirming that a setting took effect, both of which follow. Some items exist under both branches, so make it a habit to look at both whenever you are hunting for a setting.

The two branches inside a GPOEvery GPO has a Computer Configuration branch and a User Configuration branch, where Computer Configuration is applied at startup and takes effect for anyone who signs in to that PC, and User Configuration is applied at sign-in and takes effect no matter which PC the user signs in toContents of a GPOComputer ConfigurationUser ConfigurationApplied at startupApplied at sign-inTakes effect for anyone who signs inTakes effect on any PC

Figure 2: A GPO has two branches, Computer Configuration tied to the PC and User Configuration tied to the person.

3. How Application Works — LSDOU’s “Last Write Wins” and Controlling Inheritance

3.1. LSDOU: Local, Site, Domain, OU

On a domain-joined PC, GPOs are processed in the following order.1

  1. The local GPO
  2. GPOs linked to the site
  3. GPOs linked to the domain
  4. GPOs linked to an OU (organizational unit) — processed from the highest OU down, ending with the GPOs on the OU that directly contains the target computer or user

The name LSDOU is taken from those initials. It expresses the order in which policies are processed, not an order “from highest precedence down.”

When several GPOs configure the same setting, the GPO processed later wins. Settings that do not conflict are simply combined.1

In this default order, the GPO on the OU closest to the target is the strongest and the local GPO is the weakest. “I fixed it in gpedit.msc and it reverted” is exactly this behavior working as specified. The exceptions that change inheritance are covered in Section 3.2.

The LSDOU processing order and last write winsGPOs are processed in the order local, site, domain, OU, and in a conflict the GPO processed later wins, so the GPO on the OU closest to the target is the strongest and the local GPO is the weakest1. Local GPO2. Site3. Domain4. OU (from the top down)Last write wins in a conflictThe GPO on the nearest OU is strongestThe local GPO is weakest

Figure 3: LSDOU is the order in which policies are processed, and when the same setting conflicts, the GPO processed later wins.

When several GPOs are linked to the same site, domain, or OU, check the link order on the “Linked Group Policy Objects” tab in GPMC.

The GPO with the lowest number is processed last and therefore has the highest precedence. It is important not to read this as “a lower number means it is processed first.”1

Link order when several GPOs sit at the same locationWhen several GPOs are linked to the same site or domain or OU, the processing order is decided by the link order in GPMC, and the GPO with the lowest number is processed last and takes the highest precedenceSeveral GPOs at the same locationDecided by the link order in GPMCThe lowest-numbered GPO is processed lastWins by last write and takes highest precedence

Figure 4: At the same link target, the GPO with the lowest link order number is processed last and wins.

3.2. Block Inheritance and Enforced

Block Inheritance and Enforced are the mechanisms that create exceptions to the default order in Section 3.1. Read them by separating where you set them from what they stop.1

  • Block Inheritance: set on a domain or an OU, it stops GPOs from being inherited from above. It is the tool for “this OU alone should not receive the company-wide standard.”
  • Enforced (formerly No Override): set on a GPO link, it makes that GPO always apply even where inheritance is blocked below, and stops lower GPOs from overwriting it. When Block Inheritance and Enforced collide, Enforced wins.1
How Block Inheritance and Enforced relateBlock Inheritance stops GPOs from being inherited from above, but an enforced GPO always applies even where inheritance is blocked below and cannot be overwritten by lower GPOsNoYesNoYesGPO from aboveInheritance blocked below?Inherited as isIs the GPO link enforced?Inheritance stopsAlways appliedNot overwritten by lower GPOs

Figure 5: Block Inheritance stops inheritance from above, but an enforced GPO crosses the block and always applies.

Limit What You Use Enforced For

Because Enforced changes the default “last write wins,” using it liberally produces more results that do not match your intuition even when you read the RSoP. The rule of thumb is to limit it to things like security settings that absolutely must hold company-wide.

That covers inheritance and precedence. Whether a GPO can be applied to a target at all is also decided by security filtering, which comes next.

3.3. Security Filtering

Application Requires Both “Read” and “Apply”

Beyond the link target, who a GPO applies to can also be narrowed per GPO. The target user or computer must hold both the “Read” and the “Apply group policy” permissions on that GPO.13

By default, Authenticated Users, which includes both users and computers, holds both permissions, so everything under the link target is in scope. Narrowing this down to a specific security group is what security filtering does.

The filter applies to the GPO as a whole. It is not a mechanism for narrowing individual settings inside a GPO to different targets.13

For User-Targeted GPOs, Keep the PC’s Read Permission Too

When you narrow the target, do not remove “Read” from Authenticated Users. Since MS16-072 (2016), user-targeted policy is retrieved under the computer’s security context. If the PC cannot read the GPO, it will not be applied even when the target user holds both permissions.14

Think of the required permissions as two separate things.

  • Give the target group Read plus Apply group policy.
  • Leave Read only for Authenticated Users or Domain Computers. The Apply permission is not needed.14
How security filtering decides whether a GPO appliesFor a GPO to apply, the target user or computer must hold both the Read and the Apply group policy permissions, and a user-targeted GPO additionally requires that the computer account be able to read itNoYesNoYesYesNoTarget under the GPO linkBoth Read and Apply?Denied by filteringUser-targeted GPO?AppliedCan the computer read it?Not applied (MS16-072)

Figure 6: Application requires both “Read” and “Apply group policy,” and a user-targeted GPO also requires the computer account to have Read.

After Changing a Group, Confirm With a New Token

Targeting the wrong object — “the setting is computer-targeted, but only the user was added to the group” — is a common stumble. Check first whether the setting is on the computer side or the user side.

The other one is “I removed them from the group and it still applies.” Membership is evaluated from the security token built at sign-in, so simply waiting for a background refresh changes nothing.

A user’s group change reaches the filter after a sign-out and sign-in, and a computer’s after a restart, once a new token has been built.

How long a group change takes to reach the filterGroup membership is evaluated from the security token built at sign-in, so a user's change reaches the filter only after signing in again and a computer's only after a restart builds a new tokenChange the members of a groupNot reflected while the old token standsThe user signs in againThe computer restartsEvaluated with the new tokenReflected in the filterA background refresh does not resolve it

Figure 7: A group change reaches the filter only once a sign-out or a restart builds a new token.

An Application for Shared PCs: Loopback Processing

On shared PCs and Remote Desktop servers, you sometimes want to “swap the User Configuration for everyone who signs in to this PC.” The special mode for that is loopback processing.

It applies user settings based on the computer’s location, and has two modes, Replace and Merge. It is an advanced feature used on kiosk terminals and classroom PCs, and this article does no more than note that it exists.15

The idea behind loopback processingLoopback processing is a special mode that applies User Configuration based on the computer's location, has the two modes Replace and Merge, and is used where every person who signs in should get the same user settings, such as shared PCs and kiosk terminalsShared PCs, kiosk terminals, and the likeLoopback processingDecided by the computer's locationReplace modeMerge modeTakes effect for everyone who signs in

Figure 8: Loopback processing is a special mode that applies User Configuration based on the computer’s location, and it has the two modes Replace and Merge.

4. When Settings Take Effect — Foreground Processing and Background Refresh

After you change a setting, the time for it to be applied may simply not have come yet. Here, separate whether the device can reach a DC from when that particular setting is processed.2

Separate Startup and Sign-in From Refreshes While the Machine Runs

Kind Timing Scope
Foreground processing Computer Configuration: at startup / User Configuration: at sign-in All settings
Background refresh By default roughly every 90 minutes plus a random offset of 0 to 30 minutes (staggered so that not every device fetches at once) Only settings that support background processing
Background refresh (domain controllers) By default every 5 minutes Same as above

First, the Device Has to Be Able to Reach a DC

On a running device that can reach a domain controller, settings that support background refresh spread across the fleet within roughly two hours by default. They do not reach offline devices, or laptops taken off-site without a VPN connection, until the next time the device connects to a DC.

Settings that are only ever applied by foreground processing require waiting for a startup or a sign-in on top of that.

The Difference Between gpupdate and /force

When you are in a hurry, run gpupdate on the target PC. Normally it applies only the settings that changed; adding /force reapplies every setting whether or not it changed.3

rem Refresh only what changed (normally this is enough)
gpupdate

rem Reapply every setting (when you suspect the cached state)
gpupdate /force
DC reachability and how settings arriveOn a running device that can reach a domain controller, settings that support background refresh spread within roughly two hours, but they do not reach an offline device or a laptop taken off-site without a VPN connection until it next connects to a DCYesNoCan it reach a DC?Spreads within roughly two hoursDoes not arrive until it connectsOffline devices and laptops off-site without a VPN

Figure 9: A running device that can reach a DC gets the settings within roughly two hours, while an offline device gets nothing until it next connects to a DC.

Even /force Cannot Skip Foreground Processing

User-targeted software installation and folder redirection are processed only at sign-in, and computer-targeted software installation only at startup.3

The /logoff option of gpupdate signs out after the refresh and /boot restarts after it. When adding /force changes nothing, check whether the setting is one of the kinds that requires a sign-in or a restart.3

The paths by which a setting takes effectA GPO change arrives within the default interval of roughly 90 minutes plus a 0 to 30 minute offset if the setting supports background refresh, while a setting that is only applied by foreground processing has to wait for a startup or a sign-in, and even gpupdate needs /logoff or /boot for foreground-only settings when you are in a hurryYesNoChange a GPOSupports background refresh?Refreshed in roughly 90 minutes plus 0 to 30Applied at startup or sign-inTakes effectWhen you are in a hurryRun gpupdate/force reapplies everythingForeground needs /logoff or /boot

Figure 10: Background refresh delivers only the settings that support it, and settings applied only by foreground processing still need a sign-out or a restart after gpupdate.

5. Triage When a Setting Does Not Take Effect — gpresult, the Event Log, and the Registry

The tools you use have different roles. gpresult shows the result of application, the operational log shows the course of processing, and the registry shows the actual values that were written. Rather than immediately changing settings again, narrow down the cause from the result.

What you want to check What to use What to look at next
Whether the GPO you want was applied The RSoP report from gpresult The applied and denied lists, and the reasons
Whether another GPO overwrites the same setting The winning GPO for each setting LSDOU, link order, Enforced
Whether processing itself failed or was delayed The GroupPolicy operational log One processing run, identified by ActivityID
What value the app actually reads The registry and the ADMX definition Whether it is a dedicated policy key or outside one

5.1. Check the RSoP With gpresult /h

The final result of several overlapping GPOs is called RSoP (Resultant Set of Policy). The standard gpresult tool produces an HTML report from an elevated command prompt, which is easier to read.45

In the example below, create the output folder C:\temp before running it. When you read the report, also confirm that it is the result for the PC and the user you mean to investigate.

rem Write an HTML report of the RSoP for both the user and the computer
gpresult /h C:\temp\gp-report.html /f

rem To check only the summary on the console
gpresult /r
gpresult /scope computer /r

Do Not Stop at “It Was Applied”

In the report, look at the following three things in order. Even when the GPO you want is in the list, the setting will not have the value you expect if another GPO overwrites it.

  1. The list of applied GPOs — is the GPO you want in it
  2. The list of denied GPOs and the reasons — the reason it was not applied, such as security filtering, a WMI filter, or an empty GPO, is shown5
  3. The winning GPO for each setting — which GPO’s value decided the setting you care about. If a different GPO wins, revisit the precedence rules in Chapter 3
The three things to look at first in an RSoP reportIn a gpresult report, first check whether the GPO you want is in the list of applied GPOs, then check the list of denied GPOs and the reasons, and finally use the winning GPO for each setting to identify whose value wonOpen the RSoP report1. List of applied GPOs2. Denied GPOs and reasons3. Winning GPO per settingRevisit if a different GPO wins

Figure 11: Read an RSoP report in the order applied GPOs, denied GPOs and reasons, and the winning GPO for each setting.

5.2. The GroupPolicy Operational Log

Tracking Processing Failures and Delays

Failures that gpresult alone does not reveal, and problems where processing takes too long, are checked in the GroupPolicy operational log in Event Viewer.

Its location is Applications and Services Logs > Microsoft > Windows > GroupPolicy > Operational. The log name is Microsoft-Windows-GroupPolicy/Operational, and it records everything from the start to the end of processing, the lists of applied and denied GPOs, and the reasons for denial.5

Narrow to a Single Processing Run With ActivityID

Each run of policy processing is assigned a unique ActivityID. The procedure Microsoft documents is to pick up the ActivityID from a warning or error in the System log and use a custom view to narrow down to the events of that same run. That way you follow one run from start to finish without mixing in records from another.5

How to narrow down the GroupPolicy operational logEach run of policy processing is assigned a unique ActivityID in the GroupPolicy operational log, so pick the ActivityID up from a warning or error in the System log and use a custom view to narrow the reading down to the events of that one runWarning or error in the System logPick up the ActivityIDNarrow down with a custom viewRead the events of one processing runApplied and denied GPO lists with reasons

Figure 12: For the operational log, pick up the ActivityID from the System log and use a custom view to read just one run of policy processing.

5.3. The Relationship to the Registry’s Policies Keys

Administrative template policies, covered in the next chapter, are ultimately written as registry values. As a rule, they are written to the following dedicated policy keys.6

  • HKEY_LOCAL_MACHINE\Software\Policies (Computer Configuration; the recommended location)
  • HKEY_CURRENT_USER\Software\Policies (User Configuration; the recommended location)
  • HKLM\Software\Microsoft\Windows\CurrentVersion\Policies and HKCU\Software\Microsoft\Windows\CurrentVersion\Policies

Policy Values Are Read Before an App’s Own Settings

A policy-aware app behaves like this: it reads the Policies key first, uses that value if one is present, and falls back to its own setting or a default if there is none. A policy left “Not Configured” writes no value to the registry.6

In other words, an administrative template that uses the dedicated policy keys does not rewrite the app’s own setting and leave a “tattoo” behind; it places an enforced value in a separate location. Stop configuring it and the app returns to following its own setting.

Precedence between a policy value and an app settingA policy-aware app first reads the Policies key and uses that value if one is present, otherwise it uses its own setting or a default, and a policy left Not Configured writes nothing to the registryYesNoA policy-aware app reads a settingIs there a value in the Policies key?The policy value winsUses its own setting or a defaultA Not Configured policyWrites nothing to the registry

Figure 13: A policy does not rewrite the app’s own setting; instead an enforced value placed elsewhere is read with higher precedence.

Watch Out for Settings That Write Outside the Dedicated Keys and Leave Values Behind

Not every policy writes to a dedicated key. “Enable Win32 long paths,” for example, writes to LongPathsEnabled under HKLM\SYSTEM\CurrentControlSet\Control\FileSystem. Older-generation and third-party templates also include ones that write to arbitrary paths.

Settings of this kind leave their value behind even after you stop configuring the policy. Check which key the setting you care about writes to, using the ADMX definition, the setting’s explanatory text, and the gpresult report.

Values written outside the dedicated keys by a script or by Group Policy Preferences are ordinary registry values as well. Unlike the dedicated policy keys, treat them as values that remain after you stop configuring them.

Check Where the Value Was Actually Written

Start by looking at the actual values under the Policies keys. But do not conclude that “GPO has no influence here” just because nothing is there; also check whether the setting is one that writes outside the dedicated keys. The commands below are an example of looking under Policies, where most policies write.

# Example of checking values distributed by policy directly (most policies write under Policies)
Get-ChildItem "HKLM:\SOFTWARE\Policies" -Recurse | Select-Object Name
Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -ErrorAction SilentlyContinue
Triage steps when a setting does not take effectFirst check the applied and denied GPOs in the RSoP report from gpresult, then narrow the GroupPolicy operational log down by ActivityID if that is not enough, and confirm the distributed values directly in the registry's Policies keysYesNoThe setting does not take effectCheck the RSoP with gpresult /hDo you see the applied and denied reasons?Revisit precedence and filteringRead the GroupPolicy operational logNarrow to one run with ActivityIDCheck the actual values in the Policies keys

Figure 14: Triage proceeds mechanically from gpresult /h, to the GroupPolicy operational log when that is not enough, and to a direct check of the Policies keys for actual values.

6. Administrative Templates (ADMX) and the Central Store

ADMX Holds the Definitions, ADML the Display Strings

The items listed under “Administrative Templates” in GPMC have their setting definitions written in ADMX files and their per-language display strings in ADML files.

Every PC has the definitions that ship with the OS in C:\Windows\PolicyDefinitions, and the management tools read them to build the settings screen.7

In a Domain, Reference a Shared Central Store

For domain operations, create a PolicyDefinitions folder under SYSVOL on a DC. An example is \\contoso.com\SYSVOL\contoso.com\policies\PolicyDefinitions.

The contents are replicated to every DC in the domain, and the Group Policy tools then reference the Central Store by default. It exists to prevent the problem of template versions differing between management machines so that the visible items do not match. ADML files go into per-language subfolders such as ja-JP.7

How the Central Store worksCreating a PolicyDefinitions folder under SYSVOL on a domain controller replicates its contents to every domain controller and makes the Group Policy tools reference the Central Store by default, so definitions no longer differ between management machinesCreate it under SYSVOLPolicyDefinitionsReplicated to every DCGP tools reference it by defaultDefinition mismatches between machines disappearADML files go into per-language folders

Figure 15: The PolicyDefinitions folder in SYSVOL is replicated to every domain controller, and the Group Policy tools reference it by default.

Prepare Updates in a Working Folder, Then Switch Over

Microsoft distributes ADMX files for new Windows versions release by release. What you update is the Central Store. Replacing C:\Windows\PolicyDefinitions on each PC with the downloaded version is not supported.7

Update an existing store by working through the following steps rather than overwriting the production folder directly.

  1. Prepare a working folder with a version name, such as PolicyDefinitions-24H2.
  2. Assemble the full ADMX set for the OS and for apps such as Office and Edge.
  3. Rename the current PolicyDefinitions to something like PolicyDefinitions-23H2 to set it aside.
  4. Rename the working folder to PolicyDefinitions so it is referenced as production.7

The folder that gets referenced is the one named PolicyDefinitions. Simply placing files in a version-named folder has no effect. Keeping the old folder aside lets you roll back if something goes wrong.7

Steps for updating the Central StoreTo update, assemble the full ADMX set for the OS and for apps in a version-named working folder, rename the current folder to set it aside, then rename the working folder to the production name PolicyDefinitions, and roll back to the folder you set aside if a problem occursVersion-named working folderAssemble the OS and app setsRename the current one and set it asideRename the working folder to the production nameReferenced as productionRoll back to the old folder on trouble

Figure 16: For an update, assemble the full set in a working folder, set the current one aside, and promote by renaming.

7. GPO vs. Intune (MDM/CSP) vs. Manual and Script Distribution — A Decision Table

GPO is no longer the only option for configuration management of Windows devices. MDM, of which Intune is the representative, configures OS settings through a mechanism called a CSP (Configuration Service Provider). Here is a decision table for choosing which one to build around.

Aspect Domain GPO Intune (MDM/CSP) Manual and script distribution
Prerequisites AD domain join plus connectivity to a domain controller An Intune license plus device enrollment in Intune (Entra joined and hybrid joined devices, and depending on the enrollment method, Entra registered devices such as BYOD) None, which is exactly why there is no governance either
Reach to off-site and home devices Not refreshed unless it can reach a DC over a VPN or similar Delivered over the internet Depends on manual work
Granularity and coverage of settings The broadest (administrative templates plus security settings plus scripts and more) Expanding, but not yet equivalent to every GPO setting9 Only as much as you write
Enforcement Enforced as policy (Policies keys take precedence)6 Enforced as policy (CSP) If the user changes it, it does not come back
How to confirm application gpresult and the GroupPolicy operational log45 Reports in the Intune admin center Build your own mechanism
Environments it suits On-premises AD centric, devices permanently on the internal LAN Cloud centric, devices taken off-site, distributed sites A handful of machines, or as a complement to the other methods

Decide on the Device’s Identity Foundation and Location

The basis is whether the device is founded on AD or on Microsoft Entra, and where it is used. GPO is reliable for stationary in-office PCs domain-joined to on-premises AD, while domain GPOs never reach an Entra joined mobile PC.

The important thing is not to treat in-office and off-site devices as having the same reachability conditions.

In a Hybrid Environment, Decide Who Owns Each Setting

Even at small and midsize businesses, hybrid operation that combines domain join with Intune enrollment is common. What you want to avoid here is configuring the same setting through both GPO and MDM.

Policy CSP includes MDMWinsOverGP, which gives MDM precedence in a conflict. It applies, however, only to the corresponding policies inside Policy CSP. Configure a setting that is not under that control twice and there is no guarantee which one wins. Microsoft also advises against duplicate configuration.8

The principle is to decide “this area is GPO, that area is Intune” and commit each area to one of them.

Choosing between GPO and IntuneGPO suits devices whose identity foundation is on-premises AD and that stay in the office, Intune suits Entra joined and off-site devices, and in a hybrid environment you avoid configuring the same setting twice and commit each setting area to one sideAD joined and in the officeEntra joined or off-siteHybridIdentity foundation and location?GPO is reliable and fine-grainedIntune reaches off-site devicesCommit each area to one sideDuplicate configuration has no guaranteed resultUse Group Policy analytics to sort

Figure 17: Choose based on the device’s identity foundation and location, and in a hybrid environment do not configure the same setting through both GPO and MDM.

Use Group Policy Analytics to Sort Before You Move

The entry point for considering a migration is Intune’s Group Policy analytics. Import GPOs exported as XML from GPMC and it analyzes, setting by setting, what is supported by MDM, what is deprecated, and what cannot be supported. Settings that are supported can be migrated into an Intune settings catalog policy.9

Use it not as “a tool that moves everything,” but as a tool for sorting what can be moved, what cannot, and what to drop.

Ownership of Windows Update management is being reorganized in the same context. See also “Windows Update Management After WSUS Deprecation.”

Sorting with Group Policy analyticsImporting GPOs exported as XML from GPMC into Group Policy analytics sorts each setting by whether MDM supports it or whether it is deprecated or unsupported, and supported settings can be migrated into a settings catalog policyExport as XML from GPMCImport into analyticsAnalyze support per settingSupported by MDMDeprecated or unsupportedMigrate to a settings catalog policy

Figure 18: Group Policy analytics imports exported GPOs and sorts the settings that can be moved to MDM from those that cannot.

8. Pitfalls From a Developer’s Point of View — The Customer’s GPO Changes How Your App Behaves

Finally, here is what to keep in mind from the position of Custom Software Development. The customer’s GPOs quietly rewrite the assumptions your app depends on. Alongside firewalls and antivirus, GPO is a regular suspect behind “it works on the development machine but not at the customer’s.” Here are examples from practice.

The PowerShell Execution Policy

The execution policy can be centrally configured through GPO, and the MachinePolicy and UserPolicy scopes that come from GPO always take precedence over values set locally or per process.10 If an installer or an operations script is built on the assumption that “adding -ExecutionPolicy Bypass should make it run,” it will not even start under GPO management. For details, see “PowerShell Execution Policy and Script Signing.”

Firewall Local Rule Merging Turned Off

In environments where the firewall is centrally managed by GPO or Intune, local rule merging (AllowLocalPolicyMerge) can be turned off per profile. Where it is off, inbound rules that an installer registered locally exist but are not applied.11 This is a point to check without fail before deploying a server-style app, and it is covered in detail in “The Windows Firewall and Business Applications.”

Drive Mappings, Proxies, and Other Environment Configuration

Network drive mappings, printers, and the like are typically distributed through Group Policy Preferences.16 Environmental assumptions such as “there should be a Z drive” or “the proxy should be a direct connection” break down depending on which user signs in and which OU the PC belongs to. Another thing that resident apps easily overlook is that settings distributed through User Configuration are, naturally, not applied to the accounts that services and scheduled tasks run as.

The Setting Cannot Be Changed Back in the First Place

Settings that come from administrative templates normally become impossible for the user to change from the UI; the item is grayed out. The fact that “it will be fixed if you have the customer change the setting” does not work has consequences for how you design your response plan.

The assumptions a customer's GPO changesA customer's GPOs change an app's assumptions by enforcing the execution policy, turning off firewall local rule merging, distributing drive mappings and proxy settings, and leaving the user unable to change settings back, which is one reason an app fails only at the customer siteThe customer's GPOsExecution policy enforcedLocal rule merging offDrive and proxy distributionSettings cannot be changed backOne reason it fails only at the customer site

Figure 19: The customer’s GPOs quietly rewrite an app’s assumptions, including the execution policy, the firewall, and environment configuration.

Decide in Advance What Developers Check Before Deployment and During an Incident

There are three preparations to make.

Situation What the development side prepares
Before deployment Document as deployment requirements the execution policy, listening ports, write targets, proxy routes, and so on, and ask the customer’s IT staff to confirm them
During trouble Do not change settings on a hunch; check the gpresult /h report and the actual values under HKLM\Software\Policies (Chapter 5)
At design time Separate the processing that needs administrator privileges from the processing that does not

Where to draw the line on privileges is covered in “When Do You Actually Need Administrator Privileges on Windows?GPO is not your enemy; it is part of the environment’s specification. Treat it as a specification and line up the items to confirm with the administrator, and triage can proceed mechanically.

The three preparations on the development sideThe three preparations on the development side are to document the environmental assumptions the app depends on as deployment requirements and ask the customer's IT staff to confirm them before deployment, to check the gpresult report and the actual values in the Policies keys during trouble, and to separate the processing that needs administrator privileges at design timePreparation on the development side1. Document the environmental assumptions2. Confirm with gpresult and actual values3. Separate privilege needs in the designAsk the customer's IT staff before deployment

Figure 20: The three preparations on the development side are documenting the environmental assumptions, confirming with gpresult and actual values, and separating administrator privilege needs in the design.

9. Summary

  • Group Policy is a mechanism that processes per-GPO settings in the order local, site, domain, OU (LSDOU), and conflicts are decided by last write wins. The GPO on the OU closest to the target is the strongest and the local GPO is the weakest layer.
  • Block Inheritance, Enforced, and security filtering let you control the default flow. Enforced beats Block Inheritance as well, so do not overuse it.
  • Application comes in two forms: foreground processing at startup and sign-in, and a background refresh at a default interval of roughly 90 minutes plus a random offset. gpupdate /force reapplies every setting, and it has no effect on settings that are only ever processed at sign-in or restart.
  • When a setting does not take effect, triage mechanically in the order gpresult /h, then the GroupPolicy operational log, then the registry’s Policies keys. Denied GPOs come with a reason.
  • Administrative template definitions live in ADMX and ADML files, and in a domain they are consolidated into the Central Store in SYSVOL. To update, swap out the Central Store side rather than replacing the local PolicyDefinitions.
  • Decide between GPO and Intune based on the device’s identity foundation and location, and in a hybrid environment avoid configuring the same setting twice and commit each area to one owner. Group Policy analytics is useful for sorting a migration.
  • For developers, the customer’s GPOs are part of the environment specification. Document the assumptions, such as the execution policy, the firewall, and drive and proxy configuration, and build a practice of confirming them with gpresult, and most cases of “it fails only at the customer site” stop being frightening.

KomuraSoft LLC handles root cause investigation when a business app fails in a customer environment under GPO management, organizing deployment requirements such as the execution policy, the firewall, and network assumptions, and technical consulting on policy inventories and Intune coexistence strategy for IT staff who have inherited an AD environment. Starting from something like “read this gpresult report with me” is perfectly fine.

References

  1. Microsoft Learn, Group Policy processing and precedence. Covers Group Policy being processed in the order local GPO, site, domain, OU, with a GPO processed later overwriting an earlier one in a conflict (settings that do not conflict are aggregated), several GPOs in the same container being processed by link order so that the GPO with the lowest link order is processed last and takes the highest precedence, the exceptions of Enforced, disabling a link, disabling the user or computer settings, and Block Inheritance, the fact that an enforced GPO continues to apply even where inheritance is blocked below, workgroup computers processing only the local GPO, and the flow in which computer policy is applied at startup and user policy at sign-in.  2 3 4 5 6 7 8

  2. Microsoft Learn, ADMX_GroupPolicy Policy CSP. Covers computer Group Policy always being applied at system startup and refreshed in the background every 90 minutes plus a random offset of 0 to 30 minutes by default, user Group Policy always being applied at sign-in and refreshed on the same default 90-minute plus 0 to 30 minute offset schedule, the default refresh interval on domain controllers being 5 minutes, and the refresh interval being configurable in the range of 0 to 64,800 minutes.  2

  3. Microsoft Learn, gpupdate. Covers gpupdate applying only the policy settings that changed by default and reapplying every setting with /force, the /logoff option for extensions that are not processed by a background refresh but at sign-in, such as user-targeted software installation and folder redirection, the /boot option for extensions processed at startup, such as computer-targeted software installation, and the /target:{computer user} and /wait options.

     2 3 4

  4. Microsoft Learn, gpresult. Covers gpresult being the command that displays the Resultant Set of Policy (RSoP), producing an HTML report with /h and an XML report with /x and overwriting with /f, the summary display with /r and the verbose displays with /v and /z, narrowing the target with /scope {user computer}, and the resultant set of overlapping policies being generated based on site, domain, and OU membership.

     2 3

  5. Microsoft Learn, Applying Group Policy troubleshooting guidance. Covers the procedure of running gpresult /h from an elevated command prompt during Group Policy triage to see why a GPO is not applied, the GroupPolicy operational log (Microsoft-Windows-GroupPolicy/Operational) recording the list of applied GPOs and the list of denied GPOs together with the reasons for denial, the procedure of narrowing a custom view to the events of one instance using the unique ActivityID assigned to each instance of policy processing, and enabling GPSvc debug logging.  2 3 4 5 6

  6. Microsoft Learn, Implementing Registry-based Policy. Covers registry-based policy being stored only in HKCU\Software\Policies and HKLM\Software\Policies (the recommended locations) and in Software\Microsoft\Windows\CurrentVersion\Policies under HKCU and HKLM, the “Not Configured” state writing no value to the registry, applications reading the policy key first and falling back to the preference value if there is none so that the policy key always takes precedence over the preference key, the storable data types being REG_DWORD, REG_SZ, and REG_EXPAND_SZ, and applications needing to recheck the policy key when policy is updated.  2 3 4

  7. Microsoft Learn, How to create and manage the Central Store for Group Policy Administrative Templates in Windows. Covers administrative templates being split into the ADMX definitions themselves and the per-language ADML display strings, creating the Central Store as a PolicyDefinitions folder under SYSVOL on a domain controller (for example \contoso.com\SYSVOL\contoso.com\policies\PolicyDefinitions), the contents being replicated to every domain controller in the domain and the Group Policy tools referencing the Central Store by default, ADML files going into per-language folders such as en-US and ko-KR, replacing C:\Windows\PolicyDefinitions with a downloaded ADMX package not being supported, the documented update procedure of assembling the full ADMX and ADML set for the OS and app extensions in a new version-named folder such as PolicyDefinitions-24H2, renaming the current folder to something like PolicyDefinitions-23H2 to set it aside, and then renaming the new folder to the production name PolicyDefinitions, and the advantage of this method being the ability to fall back to the old folder if a serious problem occurs.  2 3 4 5 6

  8. Microsoft Learn, ControlPolicyConflict Policy CSP. Covers setting the MDMWinsOverGP policy (default value 0) to 1 giving MDM settings precedence over Group Policy for the corresponding policies inside Policy CSP, the scope being limited to policies within Policy CSP and not applying to other CSPs such as Defender CSP, and the guidance that configuring a setting outside this control from both GPO and MDM creates a conflict state with no guarantee which one wins, so duplicate configuration should be avoided.  2

  9. Microsoft Learn, Analyze your on-premises GPOs using Group Policy analytics in Microsoft Intune. Covers Group Policy analytics importing and analyzing on-premises GPOs and displaying the settings supported by MDM providers including Intune alongside the deprecated and unavailable ones, importing GPOs exported from GPMC in XML format, and the ability to migrate an imported GPO into a settings catalog policy and deploy it to devices.  2 3

  10. Microsoft Learn, about_Execution_Policies. Covers execution policy scopes being evaluated in the precedence order MachinePolicy, UserPolicy, Process, CurrentUser, LocalMachine, MachinePolicy and UserPolicy being the scopes set by Group Policy, the higher-precedence policy taking effect even if a looser (or stricter) policy is set in a lower scope, and Get-ExecutionPolicy -List showing the setting for every scope.  2

  11. Microsoft Learn, Windows Firewall rules. Covers the ability to turn off local rule merging (AllowLocalPolicyMerge) per profile in environments where the firewall is centrally managed through GPO or CSP, locally created rules not being applied when it is off, and central distribution therefore being mandatory for the rules of apps that need inbound connections.  2

  12. Microsoft Learn, Step-by-Step Guide to Managing Multiple Local Group Policy Objects. Covers local GPOs from Windows Vista onward having multiple layers (MLGPO) consisting of the Local Computer Policy, the Administrators and Non-Administrators policies, and user-specific policies, their being processed in the order local computer, administrators or non-administrators, then user-specific so that the user-specific one read last takes the highest precedence, and the feature being aimed at managing non-domain-joined PCs. 

  13. Microsoft Learn, Security filtering using GPMC. Covers security filtering being the mechanism that narrows down which users and computers receive a GPO’s settings, a GPO applying only if the target user or computer holds both the “Read” and the “Apply group policy” permissions, both permissions being granted by default on every GPO to Authenticated Users (which includes users and computers), and the filter acting on the GPO as a whole rather than on individual settings.  2

  14. Microsoft Learn, Deploying Group Policy Security Update MS16-072 (KB3163622). Covers the design change in which user Group Policy is retrieved under the computer’s security context after MS16-072 is applied, the resulting requirement that the computer account have read access to the GPO, and the need to add “Read” (the “Apply group policy” permission is not needed) for Authenticated Users or Domain Computers when their permissions have been removed through security filtering or similar.  2

  15. Microsoft Learn, Loopback processing of Group Policy. Covers loopback processing being the feature that applies a set of user-setting GPOs based on the location of the computer object, its being designed for special-purpose computers such as those in public areas, labs, and classrooms, and its being supported only in an Active Directory environment with the Merge and Replace modes. 

  16. Microsoft Learn, Group Policy Preferences Getting Started Guide. Covers Group Policy Preferences being the set of GPMC extensions that configure drive mappings, printers, scheduled tasks, services, folder options, and the like, the ability to narrow targets with item-level targeting, and the ability to distribute settings without restricting user changes and to choose which settings are enforced and which are not, which gives Preferences a different character from policies. 

Recent articles sharing the same tags. Deepen your understanding with closely related topics.

These topic pages place the article in a broader service and decision context.

This article connects naturally to the following service pages.

Frequently Asked Questions

Common questions about the topic of this article.

I ran gpupdate /force, but the setting still is not applied. Why not?
First, check whether the setting is one of the kinds that a background refresh never applies. User-targeted software installation and folder redirection are processed only at sign-in, and computer-targeted software installation only at startup, so after gpupdate finishes you need a sign-out (/logoff) or a restart (/boot). Next, run gpresult /h to produce an RSoP report and check whether that GPO appears in the list of applied GPOs, and whether it appears in the list of denied GPOs with a reason. If it is applied but the behavior does not change, suspect that another GPO with higher precedence is overwriting the same setting (last write wins). The report shows the winning GPO for each setting, so you can pin down exactly which GPO is winning.
What does "Denied (Filtering)" mean in a gpresult report?
It means the GPO is in scope as far as its link location goes, but filtering excluded it from being applied. The most common cause is security filtering: for a GPO to apply, the user or the computer must hold both the Read and the Apply group policy permissions on that GPO. By default both are granted to Authenticated Users, but if you restrict them to specific groups, a missing group membership or a forgotten computer account results in a denial. For user-targeted GPOs, granting both permissions to the target user is not enough. Since MS16-072, user policy is retrieved under the computer's security context, so Read (Apply is not needed) has to be left in place for Authenticated Users or Domain Computers. Other causes include a WMI filter whose condition does not match, or the user or computer side of the GPO being disabled. The reason for the denial is recorded both in the gpresult report and in the GroupPolicy operational log.
Should I manage devices with GPO or with Intune?
The basic rule is to match the device's identity foundation. If your devices are mainly domain-joined to on-premises AD and are permanently connected to the internal network, GPO is the most reliable and the finest-grained option. If you have a growing number of Microsoft Entra joined devices, or work-from-home machines that never connect to a domain controller, Intune (MDM/CSP), which delivers configuration outside the office as well, is the better fit. In a hybrid environment where both coexist, configuring the same setting through both GPO and MDM creates a conflict with no guaranteed result, so the principle is to decide, setting area by setting area, which one manages it and to commit to that one. When you start considering migration, importing your existing GPOs into Intune's Group Policy analytics lets you sort settings into those already supported by MDM and those that are unsupported or deprecated.
A setting I configured in the Local Group Policy Editor (gpedit.msc) gets overwritten by the domain setting. Is that by design?
Yes, it is by design. Group Policy is processed in the order local, site, domain, OU (LSDOU), and whichever GPO is processed later wins a conflict, which makes the local GPO the weakest layer. If a domain GPO configures the same setting, your local change is always overwritten. Conversely, if the domain side leaves that setting Not Configured, the local GPO's value stands as it is. Even when you really want the local setting to take precedence for testing, there is no way to reverse this precedence order on a domain-joined PC, so the realistic approaches are to create a test OU and adjust the domain-side GPO, or to use a non-domain-joined test machine.
A business app we developed fails only in the customer's environment. Is there a way to check whether GPO is the cause?
The first step is to ask the customer's administrator to run gpresult /h report.html from an elevated command prompt on the affected PC and to review the RSoP report. Look for settings that change how the app behaves: scripts blocked by the execution policy, local firewall rule merging turned off, or configured proxy settings and drive mappings. It also helps to check whether policy values for the relevant product are written under HKLM\Software\Policies and HKCU\Software\Policies in the registry, which mechanically surfaces any enforced settings that come from administrative templates. On the development side, the preparation you can make is to document the assumptions your app depends on, such as the execution policy, inbound ports, and the folders it writes to, in the deployment guide, and to have the customer's IT staff confirm them before deployment.

Author Profile

Profile page for the article author.

Go Komura

Representative of KomuraSoft LLC

Focused on Windows software development, technical consulting, and investigations into failures that are difficult to reproduce.

Back to the Blog