修復:在 Windows 上找不到引用的程序集錯誤 (0x80073701)

Jacki

在運行 Windows 10/11 的 Windows Server 或台式計算機上添加或刪除功能/角色時,您可能會遇到錯誤:

The referenced assembly could not be found. Error: 0x80073701.

嘗試使用 PowerShell(在本例中為 WSL)添加可選 Windows 功能時會出現類似的錯誤:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Enable-WindowsOptionalFeature : The referenced assembly could not be found.

此錯誤意味著 Windows 映像中指定組件的源文件丟失或損壞。

在進行故障排除之前,請檢查是否有需要主機重新啟動(狀態為“待重新啟動”)的更新。

dism /online /get-packages /format:table | Select-String "Pending"

如果安裝任何組件或軟件包後需要重新啟動,請執行此操作。

在某些情況下,即使多次重新啟動後,某些軟件包仍處於待重新啟動狀態。嘗試重命名C:WindowsWinsxs待處理.xml文件複製到 Pending.xml.old,然後重新啟動主機。

然後,使用 DISM 驗證 Windows 映像的完整性:

DISM /Online /Cleanup-Image /CheckHealth

如果此命令返回“組件存儲可修復”,請修復它:

DISM /Online /Cleanup-Image /RestoreHealth

然後,檢查Windows系統文件的完整性,並根據需要進行修復(修復後的組件將作為原始文件的來源):

sfc /scannow

如果恢復系統文件後仍未安裝 Windows 功能,請檢查%windir%LogsCBSCBS.log對於錯誤。

推薦閱讀:如何修復 Windows Installer 錯誤 1603:安裝過程中出現致命錯誤

我的 Windows Server 2022 主機上的 CBS 日誌顯示錯誤,指示之前安裝的 KB5012170 更新中缺少系統文件。

CBS Failed to pin deployment while resolving Update: Package_for_KB5012170~31bf3856ad364e35~amd64~~20348.880.1.1from file: (null) [HRESULT = 0x80073701 – ERROR_SXS_ASSEMBLY_MISSING]

在這種情況下,請從 Microsoft 更新目錄手動下載並安裝指定的 Windows 更新。

如果無法從 MSU 文件安裝更新,請提取 MSU 文件並手動將 CAB 更新包添加到 Windows 映像:

解壓 MSU 包:

expand -f:* windows10.0-kb5012170-x64 c:temp

將包添加到在線 Windows 映像:

DISM.exe /Online /Add-Package /PackagePath:c:TempWindows10.0-KB5012170-x64.cab

如果該軟件包無法下載或者更新不適用於您的 Windows 版本,您可以將 Windows 配置為忽略損壞的軟件包

! ! !以下說明不屬於 Microsoft 官方指南。請自行承擔風險,並了解這可能會導致 Windows 映像完全失敗。在進行任何更改之前,我們建議您備份 Windows 映像或創建系統還原點。

  1. 轉到註冊表項HKLMSOFTWAREMicrosoftWindowsCurrentVersionComponent Based Servicing
  2. 讓您的帳戶成為此註冊表項的所有者(默認所有者是TrustedInstaller)並授予自己完全控制權限。
  3. 找到包含您要忽略的更新包的註冊表項。
  4. 改變值當前狀態參數為0。這會通知 Windows 服務進程該組件既未安裝也未啟用。在我的示例中,包狀態的先前值是112(已安裝),所以我將其更改為0(不存在)。
  5. 恢復註冊表項的原始權限,只為管理員保留只讀訪問權限。
  6. 重新啟動計算機並確認現在可以成功添加 Windows 功能(角色)

如果 CBS 日誌顯示ERROR_SXS_ASSEMBLY_MISSING對於多個 KB 包,請對每個包執行上述步驟。可以通過使用 Select-String cmdlet 搜索文件來列出 CBS.LOG 中存在 ASSEMBLY MISSING 錯誤的所有包:

Select-String -Path "c:windowslogscbscbs.log" -Pattern "Failed to pin"

如果這不能解決問題,請嘗試使用適用於您的操作系統版本的最新版本的安裝 ISO 映像對當前 Windows 版本執行就地升級。從 Windows 安裝映像運行 setup.exe 並選擇保留個人文件和應用程序選擇更新模式時。