码迷,mamicode.com
首页 > Windows程序 > 详细

把 Win 8.1 升级成 Windows 2012 R2 (续)

时间:2015-02-14 21:26:15      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:windows   版本控制   

把 Win 8.1 升级成 Windows 2012 R2 (续)

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\
PackageDetect
PackageIndex
Packages

Microsoft-Windows-Foundation-Package
Microsoft-Windows-ServerCore-Package

1、在包检测中分别有这两项:
Microsoft-Windows-ServerCore-Package
Microsoft-Windows-Foundation-Package
在各自中有相关的包名称。
说明:第一个是通过 Get-WindowsFeature 检索;后一个是通过 Get-WindowsOptionalFeature 检索。
在服务器上主要是第一个,在工作站上主要是第二个,且在工作站上不会有第一个。
这也是对的,因为不需要了。

2、在包索引中:
只有一条记录:
对服务器,是 Microsoft-Windows-ServerCore-Package;
对工作站,是 Microsoft-Windows-Foundation-Package。
就是一个索引,没什么过多的内容。

3、在包索引的系统中:
同样,只有一条记录:
对服务器,是 Microsoft-Windows-ServerCore-Package;
对工作站,是 Microsoft-Windows-Foundation-Package。

4、在包索引的产品中:
有各自的版本名称。

5、在包中有一个 Microsoft-Windows-Common-Foundation-Package:
其属主是:Microsoft-Windows-ServerCore-Package

6、在包中很显然要有:Microsoft-Windows-ServerCore-Package
其属主是:Microsoft-Windows-ServerDatacenterEdition
这就是产品的值啊。

7、现在还有一个问题,到底是在什么地方确认是服务器,还是工作站呢,即,包中的 Microsoft-Windows-Foundation-Package 的值是:
Microsoft-Windows-ServerDatacenterEdition、还是
Microsoft-Windows-ProfessionalEdition。
是就在这里确定吗?
然后,向上回溯。

处理:
对于 1:
因为在服务器、工作站上都需要,直接导入即可。

reg import "C:\CVT\register\Package-Server\p01-Microsoft-Windows-Foundation-Package.reg"
reg import "C:\CVT\register\Package-Server\P01-Microsoft-Windows-ServerCore-Package.reg"

本来前面一个可以不导入的,但是,在服务器上的包可能还是要多于工作站的,因此,也就一并导入了。

导入也不容易啊。
对包检测没有编辑的权限,即使是 SYSTEM 帐号也是如此。而且,还有一个问题,在注册表编辑器中要可以编辑权限,但是,通过 Set-Acl,却无法编辑。
用 . “C:\SysinternalsSuite\psexec.exe” –% -i -s -d regedit 启动注册表编辑器。
给 SYSTEM 以编辑的权限,也就是完全控制了。
不仅要对包检测的根制授权,也要对 两个子键授权:Microsoft-Windows-Foundation-Package、Microsoft-Windows-ServerCore-Package。
用 . “C:\SysinternalsSuite\psexec.exe” –% -i -s -d powershell_ise 启动 PowerShell,再执行上面的命令就可以了。

对于 2:
是在包索引中操作。
应该先删掉 Microsoft-Windows-ServerCore-Package,然后,再导入 Microsoft-Windows-Foundation-Package。
同样,是要相关的授权:
对包索引的根和 Microsoft-Windows-Foundation-Package 子键。

reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackageIndex\Microsoft-Windows-Foundation-Package~31bf3856ad364e35~amd64~~0.0.0.0" /f
reg import "C:\CVT\register\Package-Server\P02-Microsoft-Windows-ServerCore-Package.reg"

对于 3:
同 2 处理。
要对包索引的根和 System 子键授权。
好像权限已经继承了,因此,不授权也可以了。不过确认一下不坏。

reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackageIndex\System" /f 
reg import "C:\CVT\register\Package-Server\p03-System.reg"

对于 4:
同 3 处理。

reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackageIndex\Product" /f 
reg import "C:\CVT\register\Package-Server\p04-Product.reg"

对于 5:
处理同上。
要对包的根和 Microsoft-Windows-Common-Foundation 授权。

reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\Microsoft-Windows-Common-Foundation-Package~31bf3856ad364e35~amd64~~6.3.9600.16384" /f 
reg import "C:\CVT\register\Package-Server\p05-Microsoft-Windows-Common-Foundation-Package.reg"

对于 6:
处理同上。

reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\Microsoft-Windows-Foundation-Package~31bf3856ad364e35~amd64~~6.3.9600.16384" /f 
reg import "C:\CVT\register\Package-Server\p06-Microsoft-Windows-ServerCore-Package.reg"

最后,别忘了把包索引和包的 SYSTEM 权限改成只读。

重启系统,验证正确性。
dism /online /get-features

系统找不到指定的文件。
可以在 C:\Windows\Logs\DISM\dism.log 上找到 DISM 日志文件
那就找吧。
实际是在 C:\Windows\Logs\DISM\CBS.log 中找到的。
C:\Windows\Servicing\Packages\Microsoft-Windows-ServerCore-Package~31bf3856ad364e35~amd64~~6.3.9600.16384.mum
但这不是一个文件,而是一组包。因为我们光是把注册 表中作了修改,但实际上,文件并不齐。
再测试一下文件安装服务器:

"Microsoft-Windows-FileServer-Package~31bf3856ad364e35~amd64~~6.3.9600.16384" ·
| % { "E:\temp\$_.mum" } `
| % { dism /online /add-package /packagepath:"$_" }

可以了。
但是,时间太长了,好像是在运行修复工作了。

现在,可以进行修复,就可以了。
先把 install.wm 文件释放出来。

dism /mount-image /imageFile:D:\Sources\install.wim /index:4 /mountDir:e:\mount /readonly /optimize
dism /online /cleanup-image /restoreHealth /Source:E:\mount\Windows /LimitAccess

把 Win 8.1 升级成 Windows 2012 R2 (续)

标签:windows   版本控制   

原文地址:http://blog.csdn.net/hadstj/article/details/43819271

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!