修复.NET Framework补丁KB4457918的启示

最近接触到了好几例NET Framework的Security and Monthly Rollup补丁安装失败的情况,仔细看去,主要是KB4457918和KB4471987这两个微软2018年12月的补丁。一般情况下,我们会通过Windows Update(WU)的推荐来自动安装补丁,安装补丁成功后,会在WU的View update history中看到安装成功的提示。于此同时,应该在Installed updates中能够看到相应的补丁。如果WU或者WSUS(Windows Server Update Services)安装补丁失败,则会在history中显示失败状态。在这种时候,我们就应该尝试手动安装失败的补丁。从微软的Microsoft Update Catalog中找到相应补丁,下载并尝试安装。

一般的补丁应该会有与KB名字相符的.msu文件或是.exe文件,下载后直接双击就应该可以执行。但这次提到的KB4457918和KB4471987则比较特殊,它们都是由五个不同的部分组成的。以KB4457918为例来说,我们可以再Microsoft Update Catalog中找到KB4457918(https://www.catalog.update.microsoft.com/Search.aspx?q=KB4457918)
在这里插入图片描述
因为案例发生在Windows Server 2008 R2 x64上,所以我们选择最后一个。前面红框部分的链接可以看到此KB的一些相关信息,点击Download按钮在弹出的窗口中发现此KB有五个部分组成,那么我们应当怎样手动安装这些部分呢,是需要全部安装吗?
在这里插入图片描述
实际上是不需要的,而且是做不到的。继续以KB4457918为例:

第一个mispatchregfix文件是Microsoft .NET Framework Registration Correction Tool,用于WSUS或WU安装时候寻找环境信息并进行匹配的文件,我个人觉得可能还会在安装后在view update history中记录安装的状态。这个程序在手动安装的时候是无效的,会显示如下错误。
在这里插入图片描述

第二个KB4457044,是 .NET Framework 3.5对应版本的升级补丁。一般Windows Server 2008 R2之后版本的OS都是内置此版本的 .NET,所以这个补丁一般都是可以顺利安装的。

第三个ndp45-kb4457038是 NET 4.5版本对应的升级补丁。

第四个ndp46-kb4457035是 NET 4.6及以上版本对应的升级补丁。

第五个kb4019990是KB4457918的前置条件,一般都可以安装成功。

这里要说的就是ndp45和ndp46这两个补丁,因为NET Framework从4.5.2以后的版本都是累进升级的,就是说升级到更高级版本会覆盖低版本的NET Framework。举例来说,你电脑上原来有4.5.2,升级4.7.2之后就会覆盖掉4.5.2,此时再安装4.5.2会提示你本机已经有了更高版本的NET,不允许安装低版本的。所以ndp45和ndp46这两个补丁只有一个能够安装上。

举例来说,我配置了一台电脑,环境为Windows Server 2008 R2 x64, NET Framework 4.7.2。这样在手动安装KB4457918时只能安装上第二个,第四个和第五个补丁,安装完成后,installed updates中有这三个补丁,但是在view update history中不会显示KB4457918安装成功。(这也是我怀疑第一个exe文件会修改history状态的原因。)

回到补丁安装失败案例上来,弄明白了KB4457918的组成及作用原理后,查看安装补丁失败的电脑的NET Framework环境是3.5和4.7.2,然后手动安装相应的补丁时发现3.5的补丁成功,但是4.7.2的补丁ndp46失败了,错误为下图
在这里插入图片描述
这个图一般出现在NET Framework不匹配的情况下,即是说你需要安装的补丁找不到相应的NET Framework。可是从系统信息中明明看到4.7.2已经被安装了呀。查看的方法如下:
1.Check the version of OS. Run msinfo32 >c:\sysinfo and send the output file to workspace.
2.Check the version of .NET.
a. Open registry by running regedit with administrator role.
b. Map to computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5
And computer\HK EY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full

这个时候需要用到 NET Framework Repair Tool来帮助修复我们的NET Framework。在案例中利用此工具修复之后依然无法成功安装KB,因此最后在控制面板中选择了4.7.2并repair,其实实际上相当于卸载又重装了4.7.2,问题顺利解决,KB4457918也顺利安装上了。

这个案例困扰了我很久,在解决之后回头来看,应该是NET Framework的注册信息出现了错误,原因不能确定,有可能是杀毒软件,也有可能是第三方插件,甚至有可能是安装什么程序的时候修改了注册表,导致补丁安装的时候找不到相应的NET Framework所以安装失败。当然也不排除NET Framework损坏的可能性,因此在控制面板中repair一下或是卸载重装一下,使NET Framework恢复到完好的状态,KB的安装就可以继续进行下去了。

需要补充一点的是,NET Framework的修复或重装需要重启计算机,有一些特殊的情况下无法重启作为服务器的计算机,暂时还没有想到办法去解决这个问题,只能想着做好计划,在下次需要重启之前进行修复工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值