Win7主题文件themepack不能安装,低级错误!

微软官方主题文件(扩展名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 

 

復制以上代碼

 

你可能感兴趣的:(windows,String,cmd,null,扩展,powershell)