使用Winlogon組件診斷并解決GPO設(shè)置丟失問題
一個加入域的Windows客戶端計算機可能不接收在活動目錄域配置的所有組策略設(shè)置。因此,一些終端可能無法應(yīng)用丟失的組策略對象設(shè)置,但是Winlogon可以幫助診斷并解決這個問題。
例如,活動目錄管理員可能已經(jīng)在組策略對象(GPO)中配置了要應(yīng)用在Windows機器上的壁紙和無線設(shè)置。你注意到用戶能***地接收壁紙設(shè)置,但無法通過GPO中的“無線網(wǎng)絡(luò)(IEEE 802.11)策略”節(jié)點使用無線配置策略。桌面管理員必須找到組策略設(shè)置丟失的常見原因。
GPO架構(gòu)中實現(xiàn)兩種類型的組件:服務(wù)器端組件與客戶端組件。服務(wù)器端組件包括組策略編輯器,活動目錄管理員可以使用組策略編輯器配置GPO的設(shè)置。客戶端組件在Windows客戶端實現(xiàn)GPO的設(shè)置。客戶端組件也被稱為客戶端擴展(CSE)。
Winlogon組件作為進程運行在Windows電腦上,處理GPO設(shè)置過程。在計算機啟動時,Winlogon進程調(diào)用CSE處理GPO設(shè)置、用戶登錄和組策略刷新間隔。每個CSE都作為動態(tài)鏈接庫(DLL)存在,并且每個CSE可以決定不執(zhí)行GPO設(shè)置過程。
Winlogon如何知道哪個CSE負責(zé)處理GPO設(shè)置?
Windows注冊表是一個巨大的信息儲藏室。大多數(shù)應(yīng)用和操作系統(tǒng)組件將Windows組件活動的必要信息存儲到注冊表數(shù)據(jù)庫。
每個客戶端擴展從Winlogon組件注冊
例如,當(dāng)一臺Windows電腦啟動時,會檢查頁面文件在注冊數(shù)據(jù)庫中的位置,并在啟動過程中將其初始化。同樣的,在指示CSE DLL開始處理組策略設(shè)置之前,Winlogon進程使用注冊表來確定該CSE的位置。
每個CSE在下列注冊表主鍵位置:HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon\GPExtensions。
如上面的截圖所示,GPO的“無線組策略”設(shè)置由“wlgpclnt.dll”DLL處理,將GUID分配給它。一些常見的CSE和GUID及其Dell名稱如以下所示:
在處理和應(yīng)用策略設(shè)置之前,客戶端設(shè)備必須存在GPO節(jié)點相應(yīng)的CSE DLL。例如,如果CSE DLL "Dskquota.dll"不存在或損壞,那么與Disk Quotas相關(guān)的GPO的設(shè)置不會被應(yīng)用或進行相關(guān)處理。
Windows XP的CSE比Windows 8和Windows 7少。例如,Windows XP設(shè)備不知道如何處理與Drive Maps相關(guān)的設(shè)置,因為Windows XP設(shè)備中沒有相關(guān)的CSE來處理GPO中“Drive Maps”節(jié)點的設(shè)置。
如果你需要Windows XP設(shè)備處理 "Drive Maps" 設(shè)置和***項設(shè)置,你必須下載并安裝CSE。
計算機啟動時啟用CSE
如前所述,Winlogon進程觸發(fā)CSE來處理GPO節(jié)點的策略設(shè)置。當(dāng)電腦啟動時,會發(fā)生以下事件:
- Windows客戶端計算機加入一個活動目錄域。
- 客戶端驗證活動目錄域控制器。
- Winlogon進程調(diào)用本身并開始處理GPO每個節(jié)點的策略設(shè)置。
- Winlogon進程需要確定處理GPO節(jié)點設(shè)置的CSE。其確定CSE DLL在HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon\GPExtensions注冊表的位置。Winlogon根據(jù)GUID確定CSE。
- Winlogon指示相應(yīng)的CSE處理GPO設(shè)置。例如,對于“Administrative Templates”GPO節(jié)點,“userenv.dll”CSE負責(zé)對GPO中的"Administrative Templates" 節(jié)點執(zhí)行相關(guān)處理并應(yīng)用設(shè)置。同樣,“Dskquota.dll”CSE負責(zé)處理GPO節(jié)點的“Disk Quota”策略設(shè)置。
- 注意:這里的GPO處理由單獨的CSE負責(zé)。Winlogon的任務(wù)是指導(dǎo)CSE對GPO處理采取必要行動。
- CSE生成Event ID 4016,這表明CSE處理已經(jīng)開始。
- 處理完成之后,Event ID 5016登錄應(yīng)用程序日志,表明CSE已經(jīng)成功處理了GPO設(shè)置。
- 為了防止CSE處理過程中出現(xiàn)問題,Event ID 6016或7016將登錄到Application Event Log來顯示CSE處理過程中出現(xiàn)的問題。CSE處理可能會導(dǎo)致下面的警告或錯誤:
-
上述注冊表位置中的CSE或GUID丟失。
-
Winlogon可以找到GUID但不能獲得CSE DLL的位置。
-
Winlogon無權(quán)訪問上述注冊表主鍵。
-
CSE DLL丟失或損壞。
-
沒有相應(yīng)的CSE來處理GPO設(shè)置。
Winlogon進程使用注冊表數(shù)據(jù)庫確定CSE的位置來處理GPO節(jié)點設(shè)置。正如你所看到的,如果沒有相應(yīng)的CSE來處理GPO設(shè)置,或如果CSE DLL損壞,GPO節(jié)點的策略設(shè)置將不適用。這就是為什么Windows客戶端可能會丟失一些GPO設(shè)置。