本文介绍Windows实例系统更新失败,提示“0x80070422(服务无法启动或运行)”错误的解决方案。
问题现象
在Windows系统的ECS实例中,出现Windows系统无法获取更新或安装更新失败的问题,并提示“0x80070422(服务无法启动或运行)”错误。如下图所示:
问题原因
导致该问题的可能原因包括但不限于以下几点:
Windows防火墙服务(mpssvc)未运行。您可以通过修改注册表并启动防火墙服务来解决该问题。具体操作,请参见Windows系统的ECS实例更新系统时,一直卡在0%该如何处理?。
Windows系统更新依赖的服务无法启动,分为以下几种情况:
服务被禁用。您可以重新启用更新依赖的服务来解决该问题。具体操作,请参见方案一:通过PowerShell或修改注册表启用服务。
服务所对应的二进制文件不存在或无法加载。您可以修复对应的二进制文件来解决该问题。具体操作,请参见方案二:使用SFC工具修复二进制文件。
解决方案
方案一:通过PowerShell或修改注册表启用服务
远程连接Windows实例。
具体操作,请参见使用Workbench工具以RDP协议登录Windows实例。
选择以下任一方式,启用被禁用的服务。
执行PowerShell脚本
打开CMD命令提示符。
右键单击图标,然后单击Windows PowerShell(管理员)。
执行以下命令,以配置相应服务为开机自启动并启动该服务。
Set-Service -Name <ServiceName> -StartType Automatic Start-Service -Name <ServiceName>
说明请您根据实例诊断报告信息,将上述脚本内容中的
<ServiceName>
修改为实际被禁用的服务名称。具体的诊断项以页面显示为准。更多信息,请参见诊断实例的健康状态。以
BITS
服务为例,如果系统返回类似以下信息,则表明启动BITS
服务失败。(可选)如果脚本无法启动目标服务,则需要重启实例使配置生效。相关操作,请参见重启实例。
说明部分系统服务必须重启实例,请以实际操作环境为准。
手动修改注册表
右键单击图标,然后单击运行。
在运行对话框中输入
regedit
,然后单击确定,进入注册表编辑器对话框。在注册表编辑器的
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BITS
路径下,双击名称为Start的注册表项,将数值数据修改为十六进制数值2
,然后单击确定。(可选)如果无法启动目标服务,则需要重启实例使配置生效。
具体操作,请参见重启实例
说明部分系统服务必须重启实例,请以实际操作环境为准。
重新更新Windows系统,如果可以正常更新或安装,说明问题已解决。
方案二:使用SFC工具修复二进制文件
远程连接Windows实例。
具体操作,请参见使用Workbench工具以RDP协议登录Windows实例。
打开CMD命令提示符。
右键单击图标,然后单击Windows PowerShell(管理员)。
执行以下命令,检测所有系统文件的完整性并执行修复动作。
sfc /scannow
重新更新Windows系统,如果可以正常更新或安装,说明问题已解决。