Impossible de désinstaller KB5042881 sur Windows Server 2022 : corriger l’erreur 0x80073701 et la boucle Windows Update

Vous venez d’installer la mise à jour cumulative KB5042881 sur un serveur Windows Server 2022 ? Depuis, Windows Update télécharge sans fin le même correctif et affiche l’erreur 0x80073701, tandis que le package reste introuvable dans l’historique ? Ce guide pas‑à‑pas vous montre comment en sortir.

Sommaire

Vue d’ensemble du problème

KB5042881 (publiée le 10 septembre 2024, faisant passer l’OS à la build 20348.2700) est une mise à jour de sécurité importante pour Windows Server 2022. Dans certains environnements, l’installation échoue partiellement : le processus TiWorker.exe se termine par ERROR_SXS_ASSEMBLY_MISSING (0x80073701), puis Windows Update retente aussitôt de l’appliquer. Parce qu’elle n’est ni inscrite dans l’historique graphique ni répertoriée par wusa.exe /uninstall, l’administrateur ne peut plus la retirer, la retenter proprement ni désactiver la boucle de déploiement.

Symptômes détaillés

  • Dans Paramètres › Windows Update, la même ligne « 2024‑09 Mise à jour cumulative pour Microsoft server operating system version 21H2 – KB5042881 » réapparaît après chaque redémarrage.
  • Le journal C:\Windows\Logs\CBS\CBS.log contient des blocs Failed to resolve execution dependency suivis d’un composant manquant.
  • dism /Online /Get-Packages n’affiche qu’un état Install pending pour le package, jamais Installed.
  • La commande wusa /uninstall /kb:5042881 renvoie aussitôt Aucun correctif ne correspond….
  • Les compteurs PerfMon WindowsUpdate : Windows Update failures augmentent à chaque tentative.

Pourquoi KB5042881 résiste‑t‑elle à la désinstallation ?

L’erreur 0x80073701 est déclenchée par le gestionnaire de composants (CBS) lorsque le magasin WinSxS ne contient pas les versions exactes des fichiers déclarés dans le manifeste de la mise à jour. Si la transaction est interrompue (arrêt brutal, manque d’espace, antivirus agressif, cluster en mode pausé, etc.), le package se retrouve dans un état « partially installed » : assez présent pour que Windows Update le considère comme requis, mais pas assez pour qu’il soit listé comme installé. Ni Windows Update, ni WUSA, ni l’interface graphique ne savent alors distinguer le correctif fantôme.

Procédure de résolution étape par étape

ÉtapeActionBut / remarque
1 — Dépannage automatiqueExécuter l’outil Résolution des problèmes Windows Update (Paramètres › Système › Dépannage › Autres dépanneurs)Répare les clés de registre HKLM\Components, réinitialise le service wuauserv et corrige la plupart des anomalies de permissions.
2 — Vérifier et réparer l’image systèmeDISM /Online /Cleanup-Image /CheckHealth DISM /Online /Cleanup-Image /ScanHealth DISM /Online /Cleanup-Image /RestoreHealthInjecte les fichiers manquants depuis la source Windows Update ou la partition de récupération et revalide les catalogues.
3 — SFCsfc /scannowVérifie que les fichiers protégés (dll, exe, mui) correspondent aux versions signées présentes dans %SystemRoot%\WinSxS.
4 — Installer les mises à jour en attenteDans Paramètres › Windows Update, cliquer sur « Rechercher des mises à jour » jusqu’à obtention du message « Vous êtes à jour ».Une Servicing Stack Update (SSU) obsolète bloque souvent la suppression correcte de packages ; elle doit être posée en premier.
5 — Réinitialiser les composants Windows Updatenet stop wuauserv net stop cryptSvc net stop bits net stop msiserver ren %windir%\SoftwareDistribution SoftwareDistribution.old ren %windir%\System32\catroot2 catroot2.old net start wuauserv net start cryptSvc net start bits net start msiserverÉlimine les métadonnées corrompues que Windows Update garde en cache, recréant des dossiers sains lors du prochain scan.
6 — Désinstallation manuelle du packagea) Tentative silencieuse : wusa /uninstall /kb:5042881 /quiet /norestart b) Si échec : dism /Online /Get-Packages /Format:Table | findstr 5042881 dism /Online /Remove-Package /PackageName:Package_for_KB5042881~31bf3856ad364e35~amd64~~10.0.20348.2700 /Quiet /NoRestartDISM force la suppression même lorsque le package est seulement « partially installed » et non indexé par WUSA.
7 — Réinstallation propre (optionnelle)Télécharger le fichier Windows10.0-KB5042881-x64.cab depuis le Catalogue Microsoft Update et l’appliquer hors ligne :
dism /Online /Add-Package /PackagePath:C:\Temp\KB5042881.cab
Une installation complète remplace les composants manquants ; le package devient alors visible et désinstallable de façon classique.
8 — Dernier recoursEffectuer une réparation sur place depuis l’ISO de Windows Server 2022 (Upgrade inplace › Conserver données et rôles) ou réinstaller le système après sauvegarde / snapshot.Solution radicale mais la plus sûre si le magasin de composants est trop endommagé pour être réparé.

Analyse et explications techniques

Le magasin de composants (component store) stocké sous %SystemRoot%\WinSxS contient toutes les versions de tous les fichiers système, protégées par des manifestes XML signés et indexées dans la base %windir%\WinSxS\ManifestCache. Lorsqu’un package (CAB ou MSU) s’installe, CBS (Component‑Based Servicing) :

  1. Décompresse le contenu dans un dossier de staging temporaire (%windir%\WinSxS\Temp).
  2. Mets à jour le registre HKLM\Components\DerivedData\Components avec les GUID des nouveaux assemblages.
  3. Déplace les fichiers vers leur dossier versionné dans WinSxS.
  4. Actualise les fichiers side‑by‑side (liens .cat et .mum).
  5. Supprime le staging et enregistre l’opération comme « installée ».

Si la transaction échoue à l’étape 3 ou 4 (panne d’alimentation, cluster suspendu, antivirus, quotas de disque), le manifeste reste partiellement déclaré. Au prochain démarrage, Windows Update voit un correctif absent, le télécharge, lance l’installation… qui échoue de nouveau parce que les dossiers existent déjà mais ne correspondent pas à la version attendue.

C’est la raison pour laquelle la simple suppression du cache (SoftwareDistribution) ou la relance du service ne suffit pas : Windows croit que la MàJ est indispensable mais la couche CBS refuse de l’enregistrer tant que les composants manquants ne sont pas réinjectés ou retirés.

Script PowerShell prêt à l’emploi

Le script suivant automatise la majorité des commandes ci‑dessus ; exécutez‑le dans une console PowerShell 7 élevée (Run as Administrator) :

# Reset‑KB5042881.ps1
Write-Host "== Arrêt des services Windows Update =="
Stop-Service -Name wuauserv, cryptSvc, bits, msiserver -Force

Write-Host "== Sauvegarde des dossiers de cache =="
Rename-Item "\$env\:SystemRoot\SoftwareDistribution" "SoftwareDistribution.bak\_\$(Get-Date -Format yyyyMMdd\_HHmmss)"
Rename-Item "\$env\:SystemRoot\System32\catroot2"      "catroot2.bak\_\$(Get-Date -Format yyyyMMdd\_HHmmss)"

Write-Host "== Redémarrage des services =="
Start-Service wuauserv, cryptSvc, bits, msiserver

Write-Host "== Vérification de l’image avec DISM =="
dism /Online /Cleanup-Image /RestoreHealth

Write-Host "== Exécution de SFC =="
sfc /scannow

Write-Host "== Tentative de désinstallation silencieuse =="
wusa /uninstall /kb:5042881 /quiet /norestart

Write-Host "== Recherche du package KB5042881 restant =="
\$pkg = dism /Online /Get-Packages | Select-String "KB5042881" | ForEach-Object {
($\_ -split ':')\[1].Trim()
}
if (\$pkg) {
Write-Host "Suppression forcée de \$pkg"
dism /Online /Remove-Package /PackageName:\$pkg /Quiet /NoRestart
} else {
Write-Host "Package non trouvé : rien à supprimer."
}

Write-Host "== Fin. Redémarrez le serveur puis relancez Windows Update. ==" 

Bonnes pratiques avant et après correctif

  • Sauvegardez toujours la machine virtuelle ou prenez un snapshot Hyper‑V/VMware avant de manipuler WinSxS ; la réparation sur place n’impacte pas les rôles, mais un retour arrière rapide reste un filet de sécurité.
  • Désactivez temporairement tout antivirus/EDR qui intercepte les accès %windir%\WinSxS, faute de quoi DISM sera ralenti ou bloqué.
  • Vérifiez l’espace disque : prévoyez au moins 10 Go libres sur la partition système pour permettre la mise en cache du package et la création d’un point de restauration automatique.
  • Appliquez d’abord les SSU indépendamment des LCU ; Microsoft livre toujours une SSU cumulative qui assure la compatibilité des outils CBS et DISM.
  • Documentez le post‑mortem : exportez %windir%\Logs\CBS\*.* et %windir%\Logs\DISM\dism.log après réparation pour enrichir votre base de connaissances interne.

FAQ

La désinstallation est‑elle risquée pour la sécurité ?

La suppression d’une LCU ramène le système au niveau de correctifs antérieur. Si votre seule option est la désinstallation, planifiez immédiatement l’installation de la LCU suivante ou l’application manuelle des bulletins de sécurité concernés afin de ne pas laisser de vulnérabilités ouvertes.
Puis‑je masquer la mise à jour au lieu de la corriger ?

Masquer KB5042881 via la stratégie de groupe (Do not include drivers with Windows Updates) ou l’outil wushowhide.diagcab n’aura qu’un effet temporaire ; la boucle reprendra après expiration de la période de pause. La vraie solution est d’enlever ou réparer le package corrompu.
Le correctif affecte‑t‑il les clusters Hyper‑V ou SQL Failover ?

Oui, si un nœud reste piégé dans la boucle, l’orchestrateur ne pourra pas équilibrer les rôles. Il faut mettre le nœud en mode « drain », appliquer la procédure ci‑dessus, redémarrer et vérifier l’état des disques de quorum avant de réadmettre le nœud dans le cluster.

Conclusion

La combinaison d’un magasin WinSxS corrompu et d’un package partiellement installé peut transformer KB5042881 en véritable boucle infernale. Heureusement, un enchaînement méthodique – DISM, SFC, réinitialisation des caches, retrait manuel du package puis réinstallation propre – permet à la grande majorité des administrateurs de rétablir un état stable sans réinstaller intégralement le serveur. En appliquant les bonnes pratiques de sauvegarde, de surveillance et de documentation, vous éviterez que l’erreur 0x80073701 ne réapparaisse lors des futurs Patch Tuesday.

Sommaire