想必 Windows 用户或多或少都遇到过更新安装失败或系统升级(回滚)问题。虽然 Windows 在绝大多数情况下都会提供关于升级或更新失败的错误代码,但有时则不会显示任何提示,让人无法猜测问题的根源。
其实,微软针对 IT Pro 有提供一个专业的 Windows 升级故障诊断工具——SetupDiag,通过该工具我们可以快速对 Windows 更新和升级过程中遇到的问题进行排错。
SetupDiag 是微软提供的免费诊断工具,旨在帮助 IT Pro 查找和解析 Windows 安装日志,诊断和确定更新或升级未能在 Windows PC 安装的确切原因。SetupDiag 可以在更新安装失败的计算机上直接执行诊断,也可以将日志从一台 PC 导出到另一台计算机,并以脱机模式运行 SetupDiag 进行分析。
SetupDiag 工具包括一个 rules.xml 数据库,其中有 60 余条规则与已知问题相匹配,随着新版本的推出,这些规则将会得到更新。
下面系统极客将引导您完成使用 SetupDiag 工具的步骤,了解更新或升级未能安装的原因,以帮助您找到解决方案。
使用 SetupDiag 检查 Windows 升级问题
使用 SetupDiag 的过程很简单。 您只需确保已安装所需版本的 .NET Framework,然后运行该工具并查看结果。
步骤1:确认 .NET Framework 版本
请使用以下步骤确认 Windows 设备满足最低 .NET Framework 要求:
1 在「开始」菜单中搜索cmd——选择「以管理员身份运行」打开「命令提示符」
2 执行以下命令以查看当前 Windows 已安装的 .NET Framework 版本;
reg query "HKLM\SOFTWARE\Microsoft\Net Framework Setup\NDP\v4" /s
3 确保Version字段的 .NET 版本 ≥ 4.6,如果设备包含 .NET 4.6 或更高版本,请继续执行以下步骤;否则,先请下载 Microsoft .NET Framework 4.6 进行安装。
步骤2:使用 SetupDiag 诊断工具
1 在 Microsoft 官网下载 SetupDiag 工具之后就可以直接运行(联机模式,分析当前计算机),如果不带任何参数,它会自动尝试查找并检测 Windows 更新和升级过程中在设备默认文件夹中生成的日志文件。
2 命令执行完扫描后,会在 SetupDiag.exe 工具的相同目录下生成 3 个文件:
- SetupDiag.exe.config配置文件
- SetupDiagResults.log包含在升级日志文件中检测到的更新和升级问题的日志文件
- Logs.zip所有日志文件的打包存档
Windows安装日志文件和事件日志包含有关在设置 Windows 期间创建日志的位置的信息。 对于脱机处理,应针对整个文件夹的内容运行 SetupDiag。 例如,根据升级失败的时间,将以下文件夹之一复制到脱机位置:
- \$Windows.~bt\sources\panther
- \$Windows.~bt\Sources\Rollback
- \Windows\Panther
- \Windows\Panther\NewOS
如果复制父文件夹和所有子文件夹,SetupDiag 会自动搜索所有子目录中的日志文件。
安装「bug 检查」分析
当 Windows 遇到危及操作系统安全(Kernel mode)的情况时,系统将会主动暂停。这种情况被专称为「bug 检查」,通常也称为系统崩溃、内核错误、停止错误或 BSOD(表现通常是蓝屏)。 通常,硬件设备、硬件驱动程序或相关软件会导致此错误。
如果你的系统启用了故障转储,在蓝屏时就会主动创建崩溃转储文件。如果在 Windows 升级过程中发生「bug check」,Windows 安装程序会自动提取一个小型转储setupmem.dmp;文件,而 SetupDiag 工具也可以调试这些设置相关的 dump 文件。
要调试设置相关的「bug 检查」必须:
- 指定/Mode:Offline和/LogsPath参数,无法在联机模式下调试内存转储。
- 采集到 setupmem.dmp 内存转储文件。(位于 %SystemDrive%$Windows.~bt\Sources\Rollback 或 %WinDir%\Panther\NewOS\Rollback 文件夹,取决于 bug check 发生的时机)~
- 执行 SetupDiag 的计算机中安装了 Windows Debugging Tools
在以下示例中,已经将 setupmem.dmp 文件复制到 D:\Dump 目录,并在运行 SetupDiag 之前安装了 Windows 调试工具:
SetupDiag.exe /Output:C:\SetupDiag\Dumpdebug.log /LogsPath:D:\Dump
查看 SetupDiag 结果
除了命令输出的结果外,用其它文本编辑器打开SetupDiagResults.log文件,其中有工具根据已知规则识别出的结果:
在文件的上半部分,有关于你 Windows 设备的一些系统信息,包括设备名称、制造商、BIOS(UEFI)版本、Windows 的原始版本、防病毒软件、升级日期等等。
信息下半部分,有错误的具体细节。从上面的 Log 我们可以看到,安装过程在 OOBE 时失败了,我们可以看到问题的错误代码(0xC1900101-0x40004)。不同的 Windows 升级问题会看到不同的错误提示,这将有助于我们找出问题的根源并解决问题。
如果你没有看到解决问题的建议,可以拿错误代码在线搜索解决方案。
SetupDiag 工作原理
其实说白了 SetupDiag 就是一个规则匹配工具,它可以自动通过微软定义的唯一标识符来查找 Windows 升级日志中的匹配项。对规则的依赖意味着 SetupDiag 只能识别已经在其规则集中定义好的问题,微软已经在 Microsoft Docs 网站上列出了共 60 余个唯一标识符。