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

把 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:-Server\p01-Microsoft-Windows-Foundation-Package.reg”reg import “C:-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 “HKLMBased Servicing0.0.0.0” /freg import “C:-Server\P02-Microsoft-Windows-ServerCore-Package.reg”

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

reg delete “HKLMBased Servicing\PackageIndex\System” /f reg import “C:-Server\p03-System.reg”

对于 4: 同 3 处理。

reg delete “HKLMBased Servicing\PackageIndex\Product” /f reg import “C:-Server\p04-Product.reg”

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

reg delete “HKLMBased Servicing6.3.9600.16384” /f reg import “C:-Server\p05-Microsoft-Windows-Common-Foundation-Package.reg”

对于 6: 处理同上。

reg delete “HKLMBased Servicing6.3.9600.16384” /f reg import “C:-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 /optimizedism /online /cleanup-image /restoreHealth /Source:E:\mount\Windows /LimitAccess

而在于当时的那份心情。可是旅行的彼时那刻我的心情一直是好的吗?

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

相关文章:

你感兴趣的文章:

标签云: