微软官方主题文件(扩展名themepack)下载后不能通过双击安装,有文章说其实是个cab文件,改扩展名后解压到指定目录即可。而另一篇文章找到了原因,通过修改注册表可以恢复主题包自动安装,隐藏这么深也能找出来,牛X了
原文地址:
http://social.technet.microsoft.com/Forums/zh-CN/window7betacn/thread/b99025ea-afa0-44d2-9798-0faaedd5fca0
节选重点部分:
經過在虛擬機的測試, 表明:
只要在注冊表
HKCU/AppEvents/Schemes/Apps/.Default/???/.Default
的默認值中的文件名的擴展名是 .wav, 但其中不包括字符 ":" OR "/", 就會導致某些 Windows 7 主題不能安裝.
注:
1. 如果默認值為空, 或文件名的擴展名不是 .wav, 都不影響安裝.
2. .wav 最右邊不得有任何(空白)字符. 如果其右邊存在(空白)字符, 那么即便其不包含 ":" OR "/" , 也不影響 Windows 7 主題的安裝.
3. 只要擴展名為 .wav 的值包含字符 ":" OR "/" , 那么安裝就會成功. 不管該值的類型是 REG_EXPAND_SZ 還是 REG_SZ, 抑或是這些字符出現次數, 出現的位置是什么.
比如:
@="ab:/:c.wav"
雖然是無效的路徑, 但是不會對 Windows 7 主題安裝造成影響, 反而是像
@="1.wav"
這樣的值, 會導致安裝失敗.
補充:
將下面的 PowerShell 代碼直接復制到 PowerShell 中, 并按 ENTER 運行, 那么將顯示出所有會影響 Windows 7 主題安裝的 ".Default" 項的完全限定路徑和默認值:
復制以下代碼
#BEGIN [string[]]$regItems = (Get-Item -Path 'HKCU:/AppEvents/Schemes/Apps/.Default').GetSubKeyNames(); [string]$nul = ''; [string]$s = ''; foreach ($ri in $regItems) { $s = [System.String]::Format("HKCU:/AppEvents/Schemes/Apps/.Default/{0}/.Default", $ri); $i = Get-Item -Path $s -ErrorAction SilentlyContinue; if ($i -eq $null) {continue;} $s = $i.GetValue(''); if ($s -eq $null -or $s -eq '') {continue;} if ($s.EndsWith('.wav') -eq $false) {continue;} if ($s.IndexOf(':') -ne -1) {continue;} if ($s.IndexOf('/') -ne -1) {continue;} $i.Name; $s; $nul; # 去掉最后一行 cmd /c 开头的 "#",将把有问题的 ".Default" 项的默认值清空 # 但同时也会将该默认值的类型变为 "REG_SZ"。 # 尚未发现该值的变更,导致系统功能存在问题。 # 如果希望自动解决此问题,可以考虑执行该命令。 # cmd /c "reg add `"$($i.Name)`" /ve /d `"`" /f" } #END
復制以上代碼