KB5022083 基于 WPF 的应用程序显示 XPS 文档的方式发生变化

注意

发布日期:
2022 年 12 月 13 日

注意

  • 本文于 2023 年 5 月 19 日修订,以更新替代解决方法注册表项。
  • 本文于 2023 年 2 月 17 日修订,以更新解决方案。
  • 本文于 2023 年 1 月 31 日修订,新增了其他解决方案。
  • 本文于 2023 年 1 月 9 日修订,扩展了症状部分并添加了常见问题解答部分。
  • 本文于 2022 年 12 月 15 日修订,新增了其他解决方案。

摘要

本文提供的帮助有助于解决以下问题:在安装 2022 年 12 月 13 日或 2023 年 2 月 14 日的 .NET Framework 和 .NET 更新或 2023 年 1 月 19 日更新后,用户可能会遇到如何基于 WPF 的应用程序显示 XPS 文档的问题。

问题

使用表结构、情节提要或超链接等结构或语义元素的 XPS 文档可能无法在基于 WPF 的阅读器中正确显示。 此外,当 XPS 文档加载到基于 WPF 的阅读器中时,某些内联图像可能无法正确显示,或者可能发生空引用异常。

解决方法

Microsoft 确定了此问题的兼容性解决方法,并制作了一个 PowerShell 脚本来解决此问题。

要安装兼容性解决方法,请按照以下步骤操作。

  1. 下载 PowerShell 脚本
  2. 以管理员身份打开 PowerShell 提示符
  3. 在提示符中,导航到下载脚本的目录
  4. 在提示符内运行命令: .\kb5022083-compat.ps1 -Install

如果该命令成功,它将打印“安装已完成”到控制台窗口。 如果该命令失败,它将显示失败的原因。 要删除兼容性解决方法,请执行上述相同步骤,但将上面的步骤 (4) 替换为: .\kb5022083-compat.ps1 -Uninstall

安装兼容性解决方案后,显示 XPS 文档的基于 WPF 的应用程序应继续像 2022 年 12 月 13 日安全更新之前那样工作。

替代解决方案

如果第一个解决方法无法解决问题,则可以使用注册表项禁用增强的安全行为。 此方法仅适用于您确定系统处理的所有 XPS 文档都是可信时,例如,它们是由您的系统生成的,而非上传到系统中的,并且任何人都不能更改它们。 如果您接受来自 Internet 的 XPS 文档、来自外部实体的电子邮件或其他不可信任的来源,请不要关闭该功能。

若要禁用增强的安全性行为,请从提升的命令提示符运行以下命令:

  • reg add “HKLM\SOFTWARE\Microsoft\.NETFramework\Windows Presentation Foundation\XPSAllowedTypes“ /v ”DisableDec2022Patch“ /t REG_SZ /d ”*“ /reg:64
  • reg add “HKLM\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\Windows Presentation Foundation\XPSAllowedTypes“ /v ”DisableDec2022Patch“ /t REG_SZ /d ”*“ /reg:64

或者,可以使用 组策略 创建一个键名称为 、值名称HKLM\SOFTWARE\Microsoft\.NETFramework\Windows Presentation Foundation\XPSAllowedTypes为 、值为 DisableDec2022Patch、值为 的REG_SZ条目*

若要删除上述任一解决方法并返回增强的安全行为,请从提升的命令提示符 () 运行以下命令 () :

  • reg delete “HKLM\SOFTWARE\Microsoft\.NETFramework\Windows Presentation Foundation\XPSAllowedTypes“ /reg:64 /f
  • reg delete “HKLM\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\Windows Presentation Foundation\XPSAllowedTypes“ /reg:64 /f

这将禁用机器范围内的增强功能,并且仅当您可以完全信任系统中的所有 XPS 输入时才应使用。

解决方案

此问题已在 2023 年 1 月 31 日发布的带外更新(适用于 Windows 10 版本 1607 和 Windows Server 2016 版本以及较新的操作系统)以及 2023 年 2 月 17 日发布的带外更新(适用于早期 Windows 和 Windows Server 版本)中得到解决。 若要获取这些带外更新的独立包,请在 Microsoft 更新目录中搜索 KB 编号。 可以手动将这些更新导入到 Windows Server Update Services (WSUS) 和 Microsoft Endpoint Configuration Manager。 有关 WSUS 说明,请参阅 WSUS 和目录站点。 有关配置管理器说明,请参阅 从 Microsoft 更新目录导入更新

如果对此问题使用了任何解决方法或缓解措施,则你不再需要它们,建议将它们删除。 要删除解决方法,请查看已针对说明应用的解决方法或备用解决方法。

产品版本 更新 知识库文章
Windows 11 版本 22H2
.NET Framework 4.8.1 目录 5023327
Windows 11 版本 21H2 目录 5023367
.NET Framework 4.8 目录 5023323
.NET Framework 4.8.1 目录 5023320
Windows Server 2022 目录 5023368
.NET Framework 4.8 目录 5023324
.NET Framework 4.8.1 目录 5023321
Azure Stack HCI 版本 22H2
.NET Framework 4.8 目录 5023324
Azure Stack HCI 版本 21H2
.NET Framework 4.8 目录 5023324
Windows 10 版本 22H2 目录 5023366
.NET Framework 4.8 目录 5023322
.NET Framework 4.8.1 目录 5023319
Windows 10 版本 21H2 目录 5023365
.NET Framework 4.8 目录 5023322
.NET Framework 4.8.1 目录 5023319
Windows 10 版本 20H2 目录 5023364
.NET Framework 4.8 目录 5023322
.NET Framework 4.8.1 目录 5023319
Windows 10 1809 (2018 年 10 月更新) 和 2019 Windows Server 目录 5023363
.NET Framework 4.7.2 目录 5023333
.NET Framework 4.8 目录 5023326
Windows 10 1607 (周年更新) 和Windows Server 2016 目录 5023416
.NET Framework 4.7.2 目录 5023332
.NET Framework 4.8 目录 5023325
Windows Embedded 8.1 和 Windows Server 2012 R2
.NET Framework 4.6.2、4.7、4.7.1、4.7.2 目录 5023819
.NET Framework 4.8 目录 5023822
Windows Embedded 8 和 Windows Server 2012
.NET Framework 4.6.2、4.7、4.7.1、4.7.2 目录 5023818
.NET Framework 4.8 目录 5023821
Windows Embedded 7 Standard 和 Windows Server 2008 R2 SP1
.NET Framework 4.6.2、4.7、4.7.1、4.7.2 目录 5023820
.NET Framework 4.8 目录 5023823
Windows Server 2008 SP2
.NET Framework 4.6.2 目录 5023820

受影响的更新

以下 .NET 版本受到影响:

  • 安装 2022 年 12 月 13 日安全更新时的 .NET Framework 2.0、3.0、3.5、3.5.1。
  • 安装 2022 年 12 月 13 日安全更新时的 .NET Framework 4.6.2、4.7、4.7.1、4.7.2。
  • 安装 2022 年 12 月 13 日安全更新时的 .NET Framework 4.8。
  • 安装 2022 年 12 月 13 日安全更新时的 .NET Framework 4.8.1。
  • 包含 Windows Desktop 运行时版本 3.1.32 的 .NET Core 3.1。
  • 包含 Windows Desktop 运行时版本 6.0.12 或更新的 .NET 6。
  • 包含 Windows Desktop 运行时版本 7.0.1 或更新的 .NET 7。

Windows 操作系统中提供的 Windows XPS 查看器应用程序不受此问题的影响。

常见问题解答 (FAQ)

这种回归是什么时候引入的?

此回归是在 2022 年 12 月 13 日的 .NET 和 .NET Framework 累积安全更新中引入的。

如果管理员安装本文提供的 PowerShell 脚本,是否会使计算机容易受到攻击?

不。 PowerShell 脚本仅解决兼容性问题。 它不会禁用 2022 年 12 月 13 日的安全更新或以其他方式降低其有效性。

如果管理员使用基于注册表的替代解决方法,是否会使计算机容易受到攻击?

可以。 上面列出的替代解决方法禁用 2022 年 12 月 13 日安全修复程序的 WPF 部分。 如果管理员使用替代解决方法,他们应该告知用户不要在这些工作站上打开来自不受信任源的 XPS 文档。

本指南仅适用于加载 XPS 文档的基于 WPF 的应用程序。 用户可以继续使用 Windows 的内置 XPS 查看器应用程序来安全地查看不受信任的 XPS 文档,即使在使用基于注册表的备选解决方法的计算机上也是如此。

Microsoft 如何解决兼容性问题?

2023 年 1 月 31 日发布的带外更新中,某些版本的 .NET Framework 解决了此问题。 对于没有解决问题的 .NET Framework 版本,Microsoft 正在积极研究兼顾兼容性同时解决潜在安全问题的其他更新。

有关保护和安全的信息