加入域的Windows客户端计算机可能无法接收在ActiveDirectory域中配置的所有组策略设置。因此,某些端点可能无法应用缺少的组策略对象设置,但Winlogon可以帮助诊断和解决此问题。例如,ActiveDirectory管理员可能已配置组策略对象(GPO)以将墙纸和无线设置应用到Windows计算机。您注意到用户可以完美地接收墙纸设置,但无法通过GPO中的“无线网络(IEEE802.11)策略”节点使用无线配置策略。桌面管理员必须找到丢失组策略设置的常见原因。GPO体系结构中实现了两种类型的组件:服务器端组件和客户端组件。服务器端组件包括组策略编辑器,ActiveDirectory管理员可以使用它来配置GPO设置。客户端组件在Windows客户端上实现GPO设置。客户端组件也称为客户端扩展(CSE)。Winlogon组件在Windows计算机上作为进程运行并处理GPO设置过程。在计算机启动时,Winlogon进程调用CSE来处理GPO设置、用户登录和组策略刷新间隔。每个CSE都以动态链接库(DLL)的形式存在,并且每个CSE都可以决定不执行GPO设置过程。Winlogon如何知道哪个CSE负责处理GPO设置?Windows注册表是一个巨大的信息存储库。大多数应用程序和操作系统组件都将有关Windows组件活动的必要信息存储在注册表数据库中。每个客户端扩展都是从Winlogon组件注册的。例如,当Windows计算机启动时,它会检查页面文件在注册数据库中的位置,并在启动过程中对其进行初始化。同样,Winlogon进程在指示CSEDLL开始处理组策略设置之前使用注册表来确定CSE的位置。每个CSE都位于以下注册表项中:HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon\GPExtensions。如上面的屏幕截图所示,GPO的“无线组策略”设置由分配了GUID的“wlgpclnt.dll”DLL处理。一些带有戴尔名称的常见CSE和GUID如下所示:在处理和应用策略设置之前,客户端设备上必须存在GPO节点的相应CSEDLL。例如,如果CSEDLL“Dskquota.dll”不存在或已损坏,则不会应用或处理与磁盘配额相关的GPO设置。WindowsXP的CSE比Windows8和Windows7少。例如,WindowsXP设备不知道如何处理与DriveMaps相关的设置,因为WindowsXP设备中没有相关的CSE来处理“DriveMaps”节点的设置在GPO中。如果您需要WindowsXP设备来处理“DriveMaps”设置和***项设置,则必须下载并安装CSE。在计算机启动时启用CSE如前所述,Winlogon进程触发CSE来处理GPO节点的策略设置。当计算机启动时,会发生以下事件:Windows客户端计算机加入ActiveDirectory域。客户端向ActiveDirectory域控制器进行身份验证。Winlogon进程调用自身并开始处理GPO的每个节点的策略设置。Winlogon进程需要识别处理GPO节点设置的CSE。它确定CSEDLL在HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon\GPExtensions注册表中的位置。Winlogon根据GUID确定CSE。Winlogon指示相应的CSE处理GPO设置。例如,对于“管理模板”GPO节点,“userenv.dll”CSE负责处理设置并将设置应用到GPO中的“管理模板”节点。同样,“Dskquota.dll”CSE负责处理GPO节点的“磁盘配额”策略设置。注意:此处的GPO处理由单独的CSE负责。Winlogon的任务是引导CSE对GPO处理采取必要的行动。CSE生成事件ID4016,表示CSE处理已开始。处理完成后,应用程序日志中会记录事件ID5016,表示CSE已成功处理GPO设置。为了防止CSE处理期间出现问题,事件ID6016或7016将记录到应用程序事件日志中以显示CSE处理期间的问题。CSE处理可能会导致以下警告或错误:上述注册表位置中缺少CSE或GUID。Winlogon可以找到GUID但不能找到CSEDLL的位置。Winlogon无权访问上述注册表项。CSEDLL丢失或损坏。没有相应的CSE来处理GPO设置。Winlogon进程使用注册表数据库来确定CSE的位置以处理GPO节点设置。如您所见,如果没有相应的CSE来处理GPO设置,或者如果CSEDLL已损坏,则GPO节点的策略设置将不适用。这就是Windows客户端可能会丢失某些GPO设置的原因。
