看到很多反映說在安裝了 Vista 更新之後(尤其是 KB933928 和 935280),第三方主題無法使用的問題.經過復查,自定義主題所需改動的 3 個文件(Shsvcs.dll,Uxtheme.dll,Themeui.dll)均無問題,版本號均為原來的 6.0.16386.那麼,問題出在哪裡呢?
我研究了很多第三方的主題,無意發現,主題語言文件對應的語言包文件名與主題文件名不匹配是導致主題不能用的一個原因.以我現在使用的 Aero 5048 為例,主題文件夾下的視覺樣式文件名為 Aero 5048.msstyles,而對應的語言包 (en-US 或 zh-CN)中的語言文件為 Aero.msstyles.這就導致了 Windows 在加載主題時候,讀取不出正確的語言文件(要找的是 Aero 5048.msstyles.mui 而非 Aero.msstyles.mui),從而導致主題無法加載.為什麼在安裝更新之前都可以加載呢?原因就在於 Windows 緩存了這些語言文件,裝載主題的時候不需要從 Aero.msstyles.mui 當中讀取對應語言數據,所以使用一直沒有問題.
此問題正確的解決辦法是:進入對應的語言文件夾,將 Aero.msstyles.mui 更名為視覺樣式對應的文件名.以 Aero 5048 為例,將 Aero.msstyles.mui 更名為 Aero 5048.msstyles.mui,然後重新打開"個性化",選擇需要更換的主題即可.所以,這不存在什麼微軟打擊第三方主題的問題.
PS: 在主題文件和語言包不對應的情況下,如果把 Windows/res/cache 下面的全部東西都刪掉,就會發現同樣的問題.