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 日的安全更新,或 2023 年 1 月 19 日的 .NET Framework 與 .NET 更新後,使用者可能會遇到基於 WPF 的應用程式呈現 XPS 文件時出現的問題。

徵兆

使用結構性或語意元素如表格結構、故事板或超連結的 XPS 文件,可能無法在基於 WPF 的閱讀器中正確顯示。 此外,部分內嵌影像可能無法正確顯示,或在將 XPS 文件載入基於 WPF 的閱讀器時,可能會發生 Null 引用異常。

因應措施

Microsoft 找到了一個相容性解決方法,並製作了 PowerShell 腳本來解決這個問題。

要安裝相容性替代方案,請依照以下步驟操作。

  1. 下載 PowerShell 腳本
  2. 以管理員身份開啟 PowerShell 提示
  3. 在提示中,導覽到下載腳本的目錄
  4. 在提示字元執行指令: .\kb5022083-compat.ps1 -安裝

如果指令成功,會在主控台視窗列印「安裝完成」。 如果指令失敗,系統會顯示失敗原因。 要移除相容性解決方法,請依照上述步驟操作,但將上述步驟 (4) 替換成: .\kb5022083-compat.ps1 -卸載

一旦安裝相容性權宜之而為,顯示 XPS 文件的 WPF 應用程式將能繼續與 2022 年 12 月 13 日安全更新前相同運作。

替代變通方法

如果第一個解決方法沒解決問題,你可以用登錄檔條目來停用強化的安全行為。 只有在你確定所有 XPS 文件都是可信的,例如系統產生的,而非上傳到系統,且任何人無法更改的情況下,才應該這麼做。 如果你接受來自網路的 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

或者,你也可以使用 群組原則 建立一個REG_SZ條目,鍵名HKLM\SOFTWARE\Microsoft\.NETFramework\Windows Presentation Foundation\XPSAllowedTypes為 、值名稱DisableDec2022Patch為 ,以及值為*

要移除上述任何一個變通方法並恢復增強的安全行為,請從升高的命令提示字元執行以下命令 () (s) :

  • 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 Update 目錄匯入更新

如果您已使用此問題的任何解決方法或緩和措施,則不再需要它們,建議您將它們移除。 要移除 workaround ,請檢視已套用的 workaround 或替代替代方案作為說明。

產品版本 更新
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 版本受影響:

  • .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 日的安全更新時。
  • 安裝 2022 年 12 月 13 日的安全更新時,安裝了 .NET Framework 4.8。
  • 安裝 2022 年 12 月 13 日安全更新時,使用 .NET Framework 4.8.1。
  • .NET Core 3.1,搭配 Windows 桌面執行環境版本 3.1.32。
  • .NET 6,並支援 Windows 桌面執行環境版本 6.0.12 或更新版本。
  • .NET 7,並搭載 Windows Desktop 執行時版本 7.0.1 或更新版本。

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 日發布的 out-of-band 更新中,針對部分 .NET Framework 版本進行了修正。 對於未被針對的 .NET Framework 版本,Microsoft 正積極研究一項額外更新,該更新旨在恢復相容性並解決潛在的安全問題。

有關保護和安全性的資訊