使用Winlogon組件診斷并解決GPO設置丟失問題
一個加入域的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設置。