作者:棋玉
案例1:
补丁安装失败,重启后补丁回滚并且服务器启动报错 bootmgr is missing
排查:
1.查看cbs log,回滚之前的报错是copy bootmgr 的时候报错了,这个就解释了为什么启动会报错bootmgr is missing。
错误代码是0x5, 这个一般表示是acessdenied,没有权限。
2.单独下载一个补丁,手动安装时发现直接报错80070005
3.对于此类access denied 的问题,可以收集procmon 看一下具体是什么导致了access denied。
a.从下面链接下载并且解压该工具:
http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
b.在出问题的机器上,双击Procmon.exe文件(管理员身份打开)来抓取进程,您将会看到工具开始抓取进程。
c.当Process Monitor工具运行的时候, 请重现该问题。
d.当问题完全重现, 在该软件的窗口中点击File -> Capture Events 来停止工具的运行. 然后点击 File -> Save 来保存日志文件。
4.收集procmon 日志,发现在向C盘根目录写入文件报错了。
5.查看C盘根目录的权限,发现其中有一条是拒绝用户写入的权限。
解决方案:
将用户的拒绝权限删除后,补丁成功安装,服务器正常启动。
案例2:
补丁安装报错80070005
排查:
1.查看 c:\windows\logs\cbs\cbs.log
,看到在解压补丁的时候就报错了,这种多是跟三方组件有关(客户装有360和安全狗),建议客户卸载,客户不同意卸载。
2.收集procmon日志,看到安全狗一直对文件在进行读写请求。
解决方案:
卸载安全狗后,补丁成功安装
案例3:
安装补丁报错80070005
排查:
需要查看c:\windows\windowsupdate.log
(主要是下载过程)和 c:\windows\logs\cbs
(主要是安装过程),看到报错 Failed to query interface passed in handler for IID_ICbsUIHandler. [HRESULT = 0x80070005 - E_ACCESSDENIED]。
ACCESSDENIED 报错表示拒绝访问,一般怀疑是三方组件的影响,禁用三方服务后,报错依旧。
解决方案:
运行dcomcnfg打开组件服务,在组件服务——计算机——我的电脑上点击右键——属性,按如下截图所示设置。