Architecture of Windows Group Policy for Windows Server 2008 and Windows Vista
- 3/5/2008
Client-Side Extensions
Client-side extensions (CSEs) provide much of the intelligence behind Group Policy. CSEs are files that must reside on the computer that is consuming Group Policy settings. The CSEs are divided into logical categories that match the nodes within the GPO, which can be seen in the structure of the GPO in the GPME. For example, the Security Settings node and all of the settings under it are controlled by the security CSE. The Drive Maps policy under the Preferences nodes is controlled by its own CSE, the Group Policy Drive Maps CSE.
The CSEs are .dll files that contain code that applies the settings to the target computer. The settings are delivered from the domain controllers to the computer receiving the policy settings during Group Policy processing. The data delivered to the target computer is the information stored in the files that makes up the GPT of the GPO. When these raw settings are delivered to the target computer, the appropriate CSEs perform the correct action on the target computer. Each CSE is tracked and managed by a GUID. The GUID ensures that the CSE is unique”we saw earlier that the GPC tracks the correct CSE in the gPCMachineExtensionNames and gPCUserExtentionNames attributes.
Table 4-4 provides information about all of the CSEs that are supported in Windows Server 2008 and Windows Vista. The CSEs are referenced in the registry, where this information is kept and tracked. You can see the full list of CSEs in the registry at HKLM\ Software\Microsoft\Windows NT\CurrentVersion\Winlogon\GPExtensions.
Table 4-4. Group Policy Client-Side Extensions
Client-Side Extension |
CSE DLL |
GUID |
Wireless Group Policy |
Wlgpclnt.dll |
{0ACDD40C-75AC-47ab-BAA0-BF6DE7E7FE63} |
Group Policy Environment |
Gpprefcl.dll |
{0E28E245-9368-4853-AD84-6DA3BA35BB75} |
Group Policy Local Users and Groups |
Gpprefcl.dll |
{17D89FEC-5C44-4972-B12D-241CAEF74509} |
Group Policy Device Settings |
Gpprefcl.dll |
{1A6364EB-776B-4120-ADE1-B63A406A76B5} |
Folder Restriction |
Fdeploy.dll |
{25537BA6-77A8-11D2-9B6C-0000F8080861} |
Microsoft Disk Quota |
Diskquota.dll |
{3610eda5-77ef-11d2-8dc5-00c04fa31a66} |
Group Policy Network Options |
Gpprefcl.dll |
{3A0DBA37-F8B2-4356-83DE-3E90BD5C261F} |
QoS Packet Scheduler |
Gptext.dll |
{426031c0-0b47-4852-b0ca-ac3d37bfcb39} |
Scripts |
Gpscript.dll |
{42B5FAAE-6536-11d2-AE5A-0000F87571E3} |
Internet Explorer Zonemapping |
Iedkcs32.dll |
{4CFB60C1-FAA6-47f1-89AA-0B18730C9FD3} |
Group Policy Drive Maps |
Gpprefcl.dll |
{5794DAFD-BE60-433f-88A2-1A31939AC01F} |
Group Policy Folders |
Gpprefcl.dll |
{6232C319-91AC-4931-9385-E70C2B099F0E} |
Group Policy Network Shares |
Gpprefcl.dll |
{6A4C88C6-C502-4f74-8F60-2CB23EDC24E2} |
Group Policy Files |
Gpprefcl.dll |
{7150F9BF-48AD-4da4-A49C-29EF4A8369BA} |
Group Policy Data Sources |
Gpprefcl.dll |
{728EE579-943C-4519-9EF7-AB56765798ED} |
Group Policy Ini Files |
Gpprefcl.dll |
{74EE6C03-5363-4554-B161-627540339CAB} |
Windows Search Group Policy Extension |
Srchadmin.dll |
{7933F41E-56F8-41d6-A31C-4148A711EE93} |
Security |
Scecli.dll |
{827D319E-6EAC-11D2-A4EA-00C04F79F83A} |
Deployed Printer Connections |
Gpprnext.dll |
{8A28E2C5-8D06-49A4-A08C-632DAA493E17} |
Group Policy Services |
Gpprefcl.dll |
{91FBB303-0CD5-4055-BF42-E512A681B325} |
Internet Explorer Branding |
Iedkcs32.dll |
{A2E30F80-D7DE-11d2-BBDE-00C04F86AE3B} |
Group Policy Folder Options |
Gpprefcl.dll |
{A3F3E39B-5D83-4940-B954-28315B82F0A8} |
Group Policy Scheduled Tasks |
Gpprefcl.dll |
{AADCED64-746C-4633-A97C-D61349046527} |
Group Policy Registry |
Gpprefcl.dll |
{B087BE9D-ED37-454f-AF9C-04291E351182} |
EFS Recovery |
Scecli.dll |
{B1BE8D72-6EAC-11D2-A4EA-00C04F79F83A} |
802.3 Group Policy |
Dot3gpclnt.dll |
{B587E2B1-4D59-4e7e-AED9-22B9DF11D053} |
Group Policy Printers |
Gpprefcl.dll |
{BC75B1ED-5833-4858-9BB8-CBF0B166DF9D} |
Group Policy Shortcuts |
Gpprefcl.dll |
{C418DD9D-0D14-4efb-8FBF-CFE535C8FAC7} |
Microsoft Offline Files |
Cscobj.dll |
{C631DF4C-088F-4156-B058-4375F0853CD8} |
Software Installation |
Appmgmts.dll |
{c6dc5466-785a-11d2-84d0-00c04fb169f7} |
IP Security |
Polstore.dll |
{e437bc1c-aa7d-11d2-a382-00c04f991e27} |
Group Policy Internet Settings |
Gpprefcl.dll |
{E47248BA-94CC-49c4-BBB5-9EB7F05183D0} |
Group Policy Start Menu Settings |
Gpprefcl.dll |
{E4F48E54-F38D-4884-BFB9-D4D2E5729C18} |
Group Policy Regional Options |
Gpprefcl.dll |
{E5094040-C46C-4115-B030-04FB2E545B00} |
Group Policy Power Options |
Gpprefcl.dll |
{E62688F0-25FD-4c90-BFF5-F508B9D2E31F} |
Group Policy Applications |
Gpprefcl.dll |
{F9C77450-3A41-477E-9310-9ACD617BD9E3} |
Enterprise QoS |
Gptext.dll |
{FB2CA36D-0B40-4307-821B-A13B252DE56C} |
You can see from Table 4-4 that some CSEs use the same file to store the code needed to apply settings delivered from the domain controller.
Each CSE is defined and tracked in the registry and includes a set of registry values that define and control its behavior. Clicking a CSE GUID in the registry will expose the registry settings that are configured by default and can be modified, as shown in Figure 4-12. The full list of possible registry value settings is shown in Table 4-5.
Figure 4-12 Each CSE in the registry has a set of values that control the behavior of the CSE.
Table 4-5. Possible Group Policy Extension Registry Values
Registry Value |
Value Type |
Possible Values |
(Default) |
REG_SZ |
<Name of Group Policy> |
DisplayName |
REG_EXPAND_SZ |
@<CSE DLL>, -1 to -???? |
DLLName |
REG_EXPAND_SZ |
Name or path to DLL |
EnableSynchronousProcessing |
REG_DWORD |
<0 or 1> |
EnableAsynchronousProcessing |
REG_BINARY or REG_DWORD |
<0 or 01> |
ExtensionDebugLevel |
REG_DWORD |
<0 or 1> |
ExtensionEventSource |
REG_SZ |
Varies |
ExtensionRsopPlanningDebugLevel |
REG_DWORD |
<0 or 1> |
EventSources |
REG_MULTI_SZ |
Varies |
GenerateGroupPolicy |
REG_SZ |
Varies |
MaxNGPListChangesInterval |
REG_DWORD |
<0 or 1> |
NoBackgroundPolicy |
REG_DWORD |
<0 or 1> |
NoGPOListChanges |
REG_DWORD |
<0 or 1> |
NoMachinePolicy |
REG_DWORD |
<0 or 1> |
NoSlowLink |
REG_DWORD |
<0 or 1> |
NotifyLinkTransition |
REG_DWORD |
<0 or 1> |
NoUserPolicy |
REG_DWORD |
<0 or 1> |
PerUserLocalSettings |
REG_DWORD |
<0 or 1> |
ProcessGroupPolicy |
REG_SZ |
Varies |
ProcessGroupPolicyEx |
REG_SZ |
Varies |
RequireSuccessfulRegistry |
REG_DWORD |
<0 or 1> |