憑據提供程序顯示不正確的磁貼
編輯:原來我可能想多了。請參閱下面的答案。
這在 SuperUser 上可能會更好,也可能不會更好,這是關於一些工作站未能遵守企業標準的問題。這裡所有的參考都是 Win7 Professional 安裝。
本質上,當電腦被鎖定時,某台機器現在會顯示這個:
而不是這樣:
這是一個很大的變化。正在顯示不同的憑據提供程序圖塊,我們所有的品牌都被撕掉了。正常的行為是直接進入解鎖 PC 的提示,但是這台機器需要您實際點擊“使用者解鎖”磁貼。
當您這樣做時,會出現一個相當通用的提示,同樣沒有品牌和沒有預先填充的使用者名。我懷疑它可能是作業系統附帶的預設配置中的預設提供程序之一。
不幸的是,我無法再訪問損壞的系統(我建議本地技術人員重新映像,因為在我們的案例中這是一個選項,對於罕見的問題更快)。
有誰知道解決這些問題的好方法?自從給出重新映像建議以來,我已經比較了兩個系統上的憑據提供程序系統資料庫,主要區別似乎是故障系統上沒有 Novell 憑據提供程序。顯然,當安裝此憑據提供程序時,它定義了自己的過濾器列表。在主要憑據提供程序列表中沒有過濾器:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\Credential Provider Filters\
,過濾器列表僅包含一個通用條目(我認為它是 {DDC0EED2-ADBE-40b6-A217-EDE16A79A0DE}),因此它不會重定向到以下位置的 Novell 列表:
HKEY_LOCAL_MACHINE\SOFTWARE\Novell\Authentication\NCCredProvider\FilterList
此過濾器列表包含一些更熟悉的提供程序,例如 {6f45dc1e-5384-457a-bc13-2cd81b0d28ed}。
我目前對根本原因的懷疑要麼是組策略中的某些東西(可能是機器本地的,否則整個站點應該有問題),或者是錯誤配置或嘗試解除安裝與我們的企業 MOE 互動的 Novell 客戶端(假設 Novell 身份驗證)提供者將在場。
更新
在檢查了我的家庭系統後,我沒有發現系統資料庫與 borked 系統有任何明顯差異。過濾器 GUID DDC0EED2-ADBE-40b6-A217-EDE16A79A0DE 在這兩種情況下都連結到 authui.dll 並且 Cred Provider 列表似乎幾乎相同。
但是,當工作站被鎖定時,我的家庭系統直接進入預設解鎖提示(預先填充了我的使用者名),類似於上面沒有品牌的圖像 2,這是不尋常的,因為這個“使用者解鎖”提供程序似乎是預設的回退,但它沒有出現在家庭系統上,而且我根本沒有在我的家庭系統上處理憑證提供程序的行為。儘管都使用了通用過濾器,但它們似乎呈現出不同的行為。
但是,很難在網上找到有關憑證提供者管理的任何資訊(而不是對其進行編碼),這讓我想知道是否有人曾經處理過此類問題,是否有一個很好的清單可以通過追踪此類問題問題更快。
像:
- 憑據提供程序服務是否在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication 以外的任何地方查找其提供程序(不包括使用 GUID 從此處查找 classes_root)?例如,它是否在 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Authentication 中檢查 Wow6432node 版本?
- 是否有任何形式的日誌記錄可以打開(或打開,如果它記錄到事件查看器)?如果它在預設情況下或在調整設置後顯示在事件查看器中,我應該在哪些日誌中查找哪些事件 ID?
- 結合和擴展上述內容,是否有人擁有指向現有故障排除文件的連結,或者更好地完整描述憑據提供程序如何從系統資料庫項和 CLSID DLL 引用轉換為使用者最終看到的特定圖塊?(不是規範或如何推出自己的規範,而是建構在各種情況下向使用者顯示的各種憑據提供程序螢幕的端到端過程。)
在這種情況下,我發現並解決了這個問題。在編譯我自己的憑證提供程序並蒐索系統資料庫之後,解決方案非常簡單。
(所有故障排除和圖片編輯都在 Win7 機器上完成。)
為 Windows 8/8.1 設計的 SCCM 品牌應用程序包被錯誤地部署到 Windows 7 電腦。雖然大部分效果只是裝飾性的,但
C:\ProgramData\Microsoft\使用者帳戶圖片\user.bmp
文件被搞砸了,足以混淆憑據提供程序(儘管可以在 MSpaint 和 Windows 圖像查看器中查看。)正常登錄提供程序沒有顯示空白磁貼,而是完全失敗並且根本不顯示磁貼,在鎖定後進行正常登錄電腦不可能。
事實上,刪除(手動添加,專為管理員解鎖機器)使用者解鎖提供程序會導致完全空白的螢幕,根本沒有登錄選項。
這似乎是糟糕的錯誤處理 - 顯示使用者磁貼中的任何錯誤肯定會導致憑證提供者放棄處理並僅顯示空白磁貼或從某處拉出的預設磁貼?這就是說這一定是一個特殊的失敗案例,相比之下,一個完全無聊的點陣圖文件(在十六進制編輯器中到處亂搞,直到繪製和 WIM 無法打開它),成功地處理失敗並顯示一個空白的可用圖塊:
(忽略智能卡提供商的突然出現。這是一台具有相同問題的不同機器,一台筆記型電腦,我很確定它已經有了這個提供商。)
似乎沒有一種立即明顯的方法可以找到所使用的點陣圖編碼,但對我來說解決問題就像在 mspaint 中打開文件、更改單個像素並保存一樣簡單。
在十六進制編輯器中查看問題文件,數據部分中有一堆無關的空值,模式為三個字節的像素數據 + 1 個空值。相比之下,paint 保存的版本在標題部分之後沒有空值。繪畫版本還有一個短約 100 字節的標頭。
我將在 Windows 8.1 機器上再次執行它,看看行為是否不同。也許該作業系統中的登錄 UI 可以更好地處理它們(實際上,導致問題的圖像很可能已在 Windows 8/8.1 上創建和測試)。