最近筆者在微軟新聞組先後看到若干個 Windows 外觀視覺樣式(Windows Themes)顯示不正確的問題,並在回復帖子時提了不少建議。筆者打算以此為題寫一篇 Windows Themes 故障匯總,總結八個比較有代表性的引起 Themes 顯示異常的問題。這裡所說的 Themes 包括 Windows XP/Server 2003 的外觀樣式、Windows Vista/Server 2008/Windows 7 的 Basic 樣式以及 AERO 樣式。
★ 如果 Windows 無法應用任何 Themes、只能選擇類似 Windows 2000 的經典外觀:
1.系統服務 Themes 沒有開啟。
系統服務是最常見的引起 Windows 無法應用 Themes 的原因之一,特別是 Windows Server 系統,默認不開啟此服務。以管理員權限執行 %SystemRoot%system32SERVICES.MSC 打開“服務”設置,將 Themes 服務開啟、並將其運行方式修改為“自動”即可解決(Windows Server 2003)。
Windows Server 2008 僅開啟 Themes 服務依然不夠,還需要通過“管理工具”-“服務器管理”-“打開或關閉功能”-“添加功能”,手動添加默認沒有安裝的“桌面體驗(Desktop Experience)”組件方可。微軟官方提供的參考信息為:
http://support.microsoft.com/kb/946397
筆者認為,Windows Server 2008 既然默認不安裝“桌面體驗”,其實完全沒有必要預設一個根本無法生效的 Themes 服務,此服務完全可以在安裝“桌面體驗”時再添加。
2.視覺樣式文件夾 WindowsResources hemes 中的資源受損。
如果在選擇 Themes 的列表中無法找到部分或全部選項,可能是視覺樣式文件夾 WindowsResources hemes 中的相關文件丟失或受損。
Windows XP 家庭版/專業版、Windows Server 2003 默認內置有 Luna;
Windows XP Media Center Edition 2005/Tablet PC Edition 2005 內置有 Luna 及 Royale Energy Blue;
Windows Vista/Server 2008 內置有 Aero。我們可以從其它相同版本的 Windows 計算機中直接復制 WindowsResources hemes 文件夾進行修復。
3.與 Windows Shell 相關的若干系統文件受損或需要重新注冊。
除了 WindowsResources hemes 中的資源外,Windows Shell 相關的若干系統文件如果受損也可能會引起無法應用 Themes,甚至可能會在控制面板中打開“顯示”屬性時出現 RUNDLL32 運行錯誤。這些相關的系統文件包括 Explorer.EXE、Shell32.DLL、User32.DLL、Desk.CPL、ThemeUI.DLL 等,解決方法是 SFC /SCANNOW 檢測並修復。
如果確認所有系統文件都沒有損壞,但依然無法應用 Themes 或在打開“顯示”屬性時出現 RUNDLL32 運行錯誤,可以嘗試執行 REGSVR32 MMSYSTEM.DLL 重新注冊一下此文件。少數極端情況是除了 MMSYSTEM.DLL 外,還有其它系統文件也需要重新注冊(此現象一般發生在查殺病毒後發現無法應用 Themes),此時可以將如下語句:
for %1 in (%WinDir%system32*.DLL) do REGSVR32.EXE /s %1
保存為 .BAT 批處理並運行,重新注冊一下 system32 中的所有 .DLL 文件。但除了 Windows 系統文件外,某些位於 system32 的第三方 .DLL 也將被一並重新注冊,可能會引起一些不必要的麻煩。
此外,控制面板的“顯示”屬性出現 RUNDLL32 運行錯誤的另一種可能是顯示驅動程序配置不正確,如果以安全模式啟動 Windows 可以正常打開“顯示”屬性,可能需要回到正常模式重新安裝顯示驅動程序。特別是有時在 Windows Vista 或以上版本中如果可以應用 Basic 樣式、但卻無法應用 AERO 樣式,則很有可能是顯示驅動程序配置不當或顯卡本身不支持 DirectX 9 所致。