修复Windows 10安装更新提示参数错误问题

最近很多人给自己的Windows 10安装补丁,莫名其妙的遇到了参数错误的提示。在网友“离线中勿扰”的配合下,找到了修复方法,本来是想发到远景的,但是远景也挂了,只好发到这了。

另外此问题我也反馈给了微软, 不过以微软的尿性。我是不报什么希望的。

## 问题的根源

问题根源是组件被错误的设置了压缩状态(设置了压缩状态,但是组件本身没有被压缩,同时也VT值,我很意外)。而微软在打补丁时还会执行解压动作,所以就导致了这样的问题发生。组件态CF被设置为压缩,但是文件本身没有压缩。不出错就神奇了。

## 解决办法

知道了问题根源在去解决这个问题就好办了。直接删除对应出错的组件的CF值即可。

PS:一般来说你会看到CF=0x280,根据微软CSI内部定义,0x200的意思是组件被压缩。而0x80的意思的组件被禁用(暂存)。 所以当你看到你的组件有CF=0x280而且没有VT值就放心大胆的吧CF直接删除即可。你不放心也可以先做备份。

## 操作步骤

1:出错后打开CBS日志: "C:\Windows\Logs\CBS\CBS.log",然后按Ctrl + End

在文件最后 你能看到以下内容:

======================================================================

2017-01-09 10:53:54, Info CBS FLOW: Enter Installation Stage: Primitive Installer Analysis, Current Operation Stage: Installing
2017-01-09 10:53:54, Info CSI 0000081a Regenerating payload files from delta files on component: [l:82 ml:140]'x86_wcf-system.identitymodel_b03f5f7f11d50a3a_10.0.14393.479_none_fab8de7dee16f506'
2017-01-09 10:53:54, Error CSI 0000081b@2017/1/9:02:53:54.167 (F) onecore\base\wcp\componentstore\deltastore.cpp(2879): Error STATUS_INVALID_PARAMETER originated in function ComponentStore::CRawStoreLayout::RecursivelyRegenerateComponentPayload expression: Parameter check failed
[gle=0x80004005]
2017-01-09 10:53:54, Info CBS Added C:\Windows\Logs\CBS\CBS.log to WER report.

=====================================================================

请注意黑色被加粗部分,它就是组件名称。

然后打开注册表:HKEY_LOCAL_MACHINE\COMPONENTS\DerivedData\Components\x86_wcf-system.identitymodel_b03f5f7f11d50a3a_10.0.14393.479_none_fab8de7dee16f506

PS:如不存在HKEY_LOCAL_MACHINE\COMPONENTS\DerivedData\Components,那么先在控制面板打开Windows功能界面,然后刷新下注册表编辑器即可。

删除 CF值,或者 执行 CF & ~0x200 操作 如下图所示:

(额,什么破知乎,居然无法发图,点击毫无反应,大家自己脑补下吧)

删除后,在继续安装更新,如果提示参数错误。那么在打开CBS日志,重复此步骤。

编辑于 2017-04-25