List all Group Policy Extensions Registered
I use this script to see all GP extensions that my computer can process:
ls 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GPExtensions' | select `
@{name='Guid';expression={[guid]$_.pschildname}}
@{name='Name';expression={$_.GetValue('')}}
@{name='DllName';expression={$_.GetValue('DllName')}}
@{name='ProcessWhenNoChanges';expression={!$_.GetValue('NoGPOListChanges')}}
@{name='IsUserPolicy';expression={!$_.GetValue('NoUserPolicy')}}
Group Policy Extensions are the parts that apply the information found in Group Policy objects to the computer / user.
While most settings are
done via “Administrative Templates”, there are other extensions (48
counted on my Windows 8 workstation).
Each extension registers a dll (the code that reads data from the GPO
and actually applies it), a GUID, a friendly name (some don’t) and
instructions whether it’s also a user policy (like “Deployed Printers”,
unlike “IPsec”) and if it wants to process the Group Policy even if no
settings were changed since last time (“Folder Redirection” does,
“Internet Explorer Branding” doesn’t).
Note: The last two values are stored as inversions (e.g.
NoUserPolicy
) but I “fixed” them when parsing the key.
Further reading:
Writing a Group Policy Extension
(not our case, but still has some useful data)
</p>