本文介绍如何解决生成错误代码0xC1900101 0x20017的 Windows 升级失败。 此错误可能会影响 Windows 客户端和 Windows Server 版本。
症状
尝试升级 Windows 时,将看到以下任一行为发生:
- Windows 升级过程在SAFE_OS、BOOT阶段或在清理外部驱动程序期间失败。 在这种情况下,Windows 将回滚到以前的版本。
- Windows 升级似乎已完成。 但是,计算机不会重启。
此外,你可能会看到返回其他错误代码,例如0x00000005。
原因
此错误通常由驱动程序或硬件配置问题或与第三方软件冲突导致。 此类问题包括以下示例:
- 过时或不兼容的驱动程序,尤其是网络适配器、存储控制器或外部设备的驱动程序。 例如,PVSCSI 控制器已知会导致此问题。
- 与第三方软件冲突,包括防病毒程序和安全工具(如 CrowdStrike)。
- 驱动程序设置不正确,例如 CrowdStrike 中的 CSagent 海拔配置。
- 干扰升级过程的硬件配置或动态更新设置。
决议
重要
在升级作系统之前(尤其是在生产环境中)之前,请建立可靠的备份和恢复计划。
步骤 1:确保计算机满足升级先决条件
若要验证计算机是否符合 Windows 或 Windows Server 的要求,请参阅以下文章:
步骤 2:查看事件日志
使用事件查看器查看系统日志。 具体而言,查找可能与驱动程序或硬件问题相关的任何事件。
如果确定可以修复的问题,请修复该问题,然后重试升级。
步骤 3:确保 Windows 和第三方驱动程序是最新的
- 使用 Windows 更新 检查更新 功能来确保安装了任何可用的重要更新、硬件更新和驱动程序更新。 若要确保安装了所有这些更新,可能需要多次检查更新。
- 检查第三方驱动程序并下载任何更新。 可以在制造商网站上找到添加到设备的任何硬件的第三方驱动程序和安装说明。
步骤 4:检查设备管理器是否存在错误
-
打开 Device Manager(devmgmt.msc)。 在设备列表中,查找任何标有黄色感叹号的设备。 这些设备存在驱动程序错误。
注释
可能需要选择每个类别才能展开设备列表。
-
若要修复驱动程序错误,请右键单击标记的设备,然后选择 “更新驱动程序软件 ”或“ 卸载”。
解决设备管理器中的所有错误后,请尝试再次升级。
步骤 5:检查 BIOS
确保设备的 BIOS 和固件是最新的。 如有必要,请检查设备制造商的网站。
步骤 6:修复或删除未签名的驱动程序
检查是否有任何未签名的驱动程序,并修复或删除它们。 在以下情况下,驱动程序可能未正确签名:
- 您禁用了驱动程序签名验证(强烈不建议这样做)。
- 用于对驱动程序进行签名的目录文件(扩展名为 *.cat 的文件)已损坏或缺失。 如果目录文件已损坏或丢失,尽管驱动程序应签名,但会显示为未签名。
若要检查系统是否有未签名的驱动程序,请执行以下步骤:
-
打开管理命令提示符窗口,并运行
sigverif该命令。 -
在“文件签名验证”工具中,选择“ 开始”。
-
工具运行后,它提供它找到的任何未签名驱动程序的名称、位置和版本的列表。 若要查看工具创建的日志,请选择“ 高级>视图日志 ”(日志包含未签名的驱动程序信息,还可以列出关联的目录文件)。
-
检查已识别的驱动程序是否存在问题。 在某些情况下,问题可能与目录文件(而不是驱动程序本身)相关。 若要执行详细的驱动程序检查,请下载 sigcheck.zip,并将该工具提取到计算机上的目录,例如:C:\sigcheck。
-
在命令提示符下,将当前目录更改为 sigcheck 目录(例如,输入命令
cd c:\sigcheck)。 -
对于文件签名验证工具列出的每个驱动程序,请运行
sigcheck。 例如,为每个驱动程序运行以下命令:sigcheck64 -i <DriverPath>注释
- 在此命令中, <DriverPath> 是文件签名验证工具标识的驱动程序路径。
- 如果在
sigcheck32 位操作系统上运行,请使用sigcheck -i而不是sigcheck64 -i。 - (可选)你可以使用
driverqueryWindows 中包含的工具来检查驱动程序。 有关详细信息,请参阅 “两分钟演练:DriverQuery.exe”。
如果发现未签名的驱动程序,请执行以下步骤来修复这些驱动程序:
- 检查驱动程序的更新版本,并安装更新。
- 卸载并重新安装驱动程序。
- 若要还原目录文件,请重新安装驱动程序或从其他设备复制目录文件。 可能需要分析另一台设备来标识与未签名驱动程序关联的目录文件。
如果没有这些补救措施成功,请卸载受影响的驱动程序,然后重试升级。
步骤 7:删除冲突的软件
- 尝试禁用任何第三方防病毒和反恶意软件应用程序
- 重新配置或删除已知导致冲突的软件,例如 CrowdStrike。
- 请重试升级。
步骤 8:执行干净重启
使用正常启动启动 Windows 时,会自动启动多个应用程序和服务,然后在后台运行。 这些程序包括基本系统进程、防病毒软件、系统实用工具应用程序和其他软件。 这些应用程序和服务可能会干扰更新过程。
全新重启(也称为 干净启动)在不使用这些后台应用程序和服务的情况下启动 Windows。 执行以下步骤:
- 以管理员身份登录到受影响的计算机。
- 在搜索框中,键入 msconfig,然后选择 “系统配置”。
- 在系统配置中,选择“ 服务>隐藏所有Microsoft服务>禁用所有”。
- 选择 “启动>打开任务管理器”。
- 在任务管理器中的 “启动 ”下,依次选择每个启动项,然后选择“ 禁用”。
- 关闭任务管理器。
- 在系统配置中,选择“ 启动>确定”。
- 重启电脑
计算机重启后,请重试更新或升级它。
重要
如果在安装过程中看到 “下载并安装更新 ”选项,请确保将其选中。
步骤 9:移除所有非必要的外部硬件
断开连接到系统的所有外围设备的连接,鼠标、键盘和显示设备除外。 此类设备包括外部存储设备和驱动器、扩展坞以及可能插入到设备中的其他硬件,这些硬件不需要用于基本功能。 此外,请断开或禁用不用于升级的任何网络适配器。
断开所有无关系硬件的连接后,请重试升级。
重要
若要避免禁用或删除设备的潜在驱动程序冲突,如果在安装过程中看到 “下载并安装更新 ”选项,请确保它已禁用。
步骤 10:检查本地帐户的数量
若要检查计算机本地用户帐户的数量,请执行以下步骤:
- 打开计算机管理 MMC 管理单元(在搜索框中输入 compmgmt.msc)。
- 选择 计算机配置>系统工具>本地用户和组>用户。
- 如果未使用任何用户帐户或多余的用户帐户,请将其删除。
步骤 11:替换计算机
如果问题仍然存在,请考虑替换计算机。
为高级故障排除和支持收集数据
有关故障排除帮助,请联系Microsoft支持部门。 若要提供有关你的问题的补充信息,请收集以下信息:
- CBS 日志文件夹的内容(%windir%\Logs\CBS)。
- SetupAct.log和SetupErr.log(C:\Windows 和 C:$WINDOWS.~BT\Sources\Panther)。
- TroubleshootingScript(TSS)工具日志。 有关详细信息,请参阅 “安装或升级 Windows” 的“收集数据以分析和排查 Windows 服务、更新和按需功能方案”部分。