一个加入域的Windows客户端计算机可能不接收在活动目录域配置的所有组策略设置。因此,一些终端可能无法应用丢失的组策略对象设置,但是Winlogon可以帮助诊断并解决这个问题。
例如,活动目录管理员可能已经在组策略对象(GPO)中配置了要应用在Windows机器上的壁纸和无线设置。你注意到用户能***地接收壁纸设置,但无法通过GPO中的“无线网络(IEEE 802.11)策略”节点使用无线配置策略。桌面管理员必须找到组策略设置丢失的常见原因。
GPO架构中实现两种类型的组件:服务器端组件与客户端组件。服务器端组件包括组策略编辑器,活动目录管理员可以使用组策略编辑器配置GPO的设置。客户端组件在Windows客户端实现GPO的设置。客户端组件也被称为客户端扩展(CSE)。
Winlogon组件作为进程运行在Windows电脑上,处理GPO设置过程。在计算机启动时,Winlogon进程调用CSE处理GPO设置、用户登录和组策略刷新间隔。每个CSE都作为动态链接库(DLL)存在,并且每个CSE可以决定不执行GPO设置过程。
Winlogon如何知道哪个CSE负责处理GPO设置?
Windows注册表是一个巨大的信息储藏室。大多数应用和操作系统组件将Windows组件活动的必要信息存储到注册表数据库。
每个客户端扩展从Winlogon组件注册
例如,当一台Windows电脑启动时,会检查页面文件在注册数据库中的位置,并在启动过程中将其初始化。同样的,在指示CSE DLL开始处理组策略设置之前,Winlogon进程使用注册表来确定该CSE的位置。
每个CSE在下列注册表主键位置:HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon\GPExtensions。
如上面的截图所示,GPO的“无线组策略”设置由“wlgpclnt.dll”DLL处理,将GUID分配给它。一些常见的CSE和GUID及其Dell名称如以下所示:
在处理和应用策略设置之前,客户端设备必须存在GPO节点相应的CSE DLL。例如,如果CSE DLL "Dskquota.dll"不存在或损坏,那么与Disk Quotas相关的GPO的设置不会被应用或进行相关处理。
Windows XP的CSE比Windows 8和Windows 7少。例如,Windows XP设备不知道如何处理与Drive Maps相关的设置,因为Windows XP设备中没有相关的CSE来处理GPO中“Drive Maps”节点的设置。
如果你需要Windows XP设备处理 "Drive Maps" 设置和***项设置,你必须下载并安装CSE。
计算机启动时启用CSE
如前所述,Winlogon进程触发CSE来处理GPO节点的策略设置。当电脑启动时,会发生以下事件:
- Windows客户端计算机加入一个活动目录域。
- 客户端验证活动目录域控制器。
- Winlogon进程调用本身并开始处理GPO每个节点的策略设置。
- Winlogon进程需要确定处理GPO节点设置的CSE。其确定CSE DLL在HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon\GPExtensions注册表的位置。Winlogon根据GUID确定CSE。
- Winlogon指示相应的CSE处理GPO设置。例如,对于“Administrative Templates”GPO节点,“userenv.dll”CSE负责对GPO中的"Administrative Templates" 节点执行相关处理并应用设置。同样,“Dskquota.dll”CSE负责处理GPO节点的“Disk Quota”策略设置。
- 注意:这里的GPO处理由单独的CSE负责。Winlogon的任务是指导CSE对GPO处理采取必要行动。
- CSE生成Event ID 4016,这表明CSE处理已经开始。
- 处理完成之后,Event ID 5016登录应用程序日志,表明CSE已经成功处理了GPO设置。
- 为了防止CSE处理过程中出现问题,Event ID 6016或7016将登录到Application Event Log来显示CSE处理过程中出现的问题。CSE处理可能会导致下面的警告或错误:
-
上述注册表位置中的CSE或GUID丢失。
-
Winlogon可以找到GUID但不能获得CSE DLL的位置。
-
Winlogon无权访问上述注册表主键。
-
CSE DLL丢失或损坏。
-
没有相应的CSE来处理GPO设置。
Winlogon进程使用注册表数据库确定CSE的位置来处理GPO节点设置。正如你所看到的,如果没有相应的CSE来处理GPO设置,或如果CSE DLL损坏,GPO节点的策略设置将不适用。这就是为什么Windows客户端可能会丢失一些GPO设置。