List Group Policy Client Side Extensions, CSEs, from Windows 10

Posted by

I simply discovered from earlier posts that there was no list of the CSEs of Windows 10 available, so what did I do? I simple created a list.

First of all, I installed a Windows 10 Enterprise 64-bit operating system in my Hyper-V lab and added some applications that my customers generally use.

  • Microsoft Visual C++ 2005 Redistributable
  • Microsoft Visual C++ 2005 Redistributable (x64)
  • Microsoft Visual C++ 2010  x64 Redistributable – 10.0.40219
  • Microsoft Visual C++ 2013 x86 Minimum Runtime – 12.0.21005
  • Microsoft Visual C++ 2013 x86 Additional Runtime – 12.0.21005
  • Microsoft Visual C++ 2013 x64 Additional Runtime – 12.0.21005
  • Microsoft Visual C++ 2013 x64 Minimum Runtime – 12.0.21005
  • Configuration Manager Client
  • Microsoft Online Services Sign-in Assistant
  • Configmgr 2012 Toolkit
  • Microsoft Silverlight
  • Active Directory Rights Management Services Client 2.1
  • Microsoft Application Virtualization (App-V) Client x64

The reason for why I list this is simply because the list of CSEs may differ with your installed applications and your Group Policy settings.

How do I find the list of CSEs? Actually these are listed in the registry so, with the script below you can list the CSEs of your system

$gpExtensions = Get-ChildItem “HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GPExtensions”
foreach ($gpe in $gpExtensions)
# Get the CSE Guid from the registry path
$gpeGuid = ($gpe.Name).Split(“\”)[($gpe.Name).Split(“\”).Count – 1]
# Guessing CSE name in order (default), ProcessGroupPolicy, ProcessGroupPolicyEx
$gpeDefault = (Get-ItemProperty $gpe.PSPath).'(default)’
$gpeProcessGroupPolicy = (Get-ItemProperty $gpe.PSPath).ProcessGroupPolicy
$gpeProcessGroupPolicyEx = (Get-ItemProperty $gpe.PSPath).ProcessGroupPolicyEx
if ($gpeDefault -ne $null) {
$gpeName = $gpeDefault
} elseif ($gpeProcessGroupPolicy -ne $null) {
$gpeName = $gpeProcessGroupPolicy
} elseif ($gpeProcessGroupPolicyEx -ne $null) {
$gpeName = $gpeProcessGroupPolicyEx
} else {
$gpeName = “Error guessing CSE name”
Write-Output “$($gpeGuid)`t$($gpeName)”

Or you can just type

Get-ChildItem “HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GPExtensions”  | Out-GridView

The output will be in a very simple table format, and on my machine it looks like this

{0ACDD40C-75AC-47ab-BAA0-BF6DE7E7FE63} Wireless Group Policy
{0E28E245-9368-4853-AD84-6DA3BA35BB75} Group Policy Environment
{16be69fa-4209-4250-88cb-716cf41954e0} Central Access Policy Configuration
{17D89FEC-5C44-4972-B12D-241CAEF74509} Group Policy Local Users and Groups
{1A6364EB-776B-4120-ADE1-B63A406A76B5} Group Policy Device Settings
{25537BA6-77A8-11D2-9B6C-0000F8080861} Folder Redirection
{2A8FDC61-2347-4C87-92F6-B05EB91A201A} MitigationOptions
{346193F5-F2FD-4DBD-860C-B88843475FD3} ConfigMgr User State Management Extension.
{35378EAC-683F-11D2-A89A-00C04FBBCFA2} Error guessing CSE name
{3610eda5-77ef-11d2-8dc5-00c04fa31a66} Microsoft Disk Quota
{3A0DBA37-F8B2-4356-83DE-3E90BD5C261F} Group Policy Network Options
{426031c0-0b47-4852-b0ca-ac3d37bfcb39} QoS Packet Scheduler
{42B5FAAE-6536-11d2-AE5A-0000F87571E3} Scripts
{4bcd6cde-777b-48b6-9804-43568e23545d} Remote Desktop USB Redirection
{4CFB60C1-FAA6-47f1-89AA-0B18730C9FD3} Internet Explorer Zonemapping
{4D2F9B6F-1E52-4711-A382-6A8B1A003DE6} RADCProcessGroupPolicyEx
{4d968b55-cac2-4ff5-983f-0a54603781a3} Work Folders
{5794DAFD-BE60-433f-88A2-1A31939AC01F} Group Policy Drive Maps
{6232C319-91AC-4931-9385-E70C2B099F0E} Group Policy Folders
{6A4C88C6-C502-4f74-8F60-2CB23EDC24E2} Group Policy Network Shares
{7150F9BF-48AD-4da4-A49C-29EF4A8369BA} Group Policy Files
{728EE579-943C-4519-9EF7-AB56765798ED} Group Policy Data Sources
{74EE6C03-5363-4554-B161-627540339CAB} Group Policy Ini Files
{7933F41E-56F8-41d6-A31C-4148A711EE93} Windows Search Group Policy Extension
{7B849a69-220F-451E-B3FE-2CB811AF94AE} Internet Explorer User Accelerators
{827D319E-6EAC-11D2-A4EA-00C04F79F83A} Security
{8A28E2C5-8D06-49A4-A08C-632DAA493E17} Deployed Printer Connections
{91FBB303-0CD5-4055-BF42-E512A681B325} Group Policy Services
{A3F3E39B-5D83-4940-B954-28315B82F0A8} Group Policy Folder Options
{AADCED64-746C-4633-A97C-D61349046527} Group Policy Scheduled Tasks
{B087BE9D-ED37-454f-AF9C-04291E351182} Group Policy Registry
{B587E2B1-4D59-4e7e-AED9-22B9DF11D053} 802.3 Group Policy
{BA649533-0AAC-4E04-B9BC-4DBAE0325B12} Windows To Go Startup Options
{BC75B1ED-5833-4858-9BB8-CBF0B166DF9D} Group Policy Printers
{C34B2751-1CF4-44F5-9262-C3FC39666591} Windows To Go Hibernate Options
{C418DD9D-0D14-4efb-8FBF-CFE535C8FAC7} Group Policy Shortcuts
{C631DF4C-088F-4156-B058-4375F0853CD8} Microsoft Offline Files
{c6dc5466-785a-11d2-84d0-00c04fb169f7} Software Installation
{cdeafc3d-948d-49dd-ab12-e578ba4af7aa} TCPIP
{CF7639F3-ABA2-41DB-97F2-81E2C5DBFC5D} Internet Explorer Machine Accelerators
{e437bc1c-aa7d-11d2-a382-00c04f991e27} IP Security
{E47248BA-94CC-49c4-BBB5-9EB7F05183D0} Group Policy Internet Settings
{E4F48E54-F38D-4884-BFB9-D4D2E5729C18} Group Policy Start Menu Settings
{E5094040-C46C-4115-B030-04FB2E545B00} Group Policy Regional Options
{E62688F0-25FD-4c90-BFF5-F508B9D2E31F} Group Policy Power Options
{F312195E-3D9D-447A-A3F5-08DFFA24735E} ProcessVirtualizationBasedSecurityGroupPolicy
{f3ccc681-b74c-4060-9f26-cd84525dca2a} Audit Policy Configuration
{F9C77450-3A41-477E-9310-9ACD617BD9E3} Group Policy Applications
{FB2CA36D-0B40-4307-821B-A13B252DE56C} Enterprise QoS
{fbf687e6-f063-4d9f-9f4f-fd9a26acdd5f} CP
{FC491EF1-C4AA-4CE1-B329-414B101DB823} ProcessConfigCIPolicyGroupPolicy

What order does Group Policy apply?

The orders of Group Policy

  1. Local Group Policy
  2. Site Group Policy
  3. Domain Group Policy
  4. Organizational Units Group Policy

What about the CSE?

The order of Client Side Extensions are the order you see in the registry, and that is the order you see in my list as well. But, yes normally there is a but as well Smile the first CSE to be applied is {35378EAC-683F-11D2-A89A-00C04FBBCFA2}, this is the one for Registry/Administrative Templates this also includes if you write an ADMX template on your own, this will be applied first.

You can also check the order from the Event Viewer, just browse to the Applications and Services Log\Microsoft\Windows\GroupPolicy\Operational log and filter out Event id 4016


More resources

Troubleshooting Group Policy Client-Side Extension Behavior

Group Policy Survival Guide

Optimizing Group Policy Performance


Leave a comment

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.