Sur Windows Server 2019, l’installation des mises à jour cumulatives peut échouer avec le code 0x80070002 via SCCM, Windows Update ou le catalogue. Ce guide fournit un diagnostic pas‑à‑pas, des commandes prêtes à l’emploi et des stratégies de remédiation durables.
Comprendre l’erreur 0x80070002 sur Windows Server 2019
Le code 0x80070002 signifie « fichier introuvable ». Dans le contexte du service de maintenance Windows (CBS/servicing), il apparaît lorsque le moteur d’installation ne retrouve pas un payload, un manifeste (.mum/.cat) ou un composant attendu dans le magasin WinSxS. Les causes typiques sont :
- Cache Windows Update corrompu (
SoftwareDistribution,Catroot2) ou téléchargement incomplet. - Servicing Stack obsolète (SSU) empêchant l’application d’une LCU récente.
 - Intégrité système dégradée (fichiers CBS endommagés, catalogues de signatures manquants).
 - Problèmes de transport (proxy/inspection SSL, BITS en échec, horloge décalée) entraînant des erreurs de hachage.
 - États en attente bloquants (
Pending.xml, clés RebootPending), verrous antivirus ou agent de sauvegarde. 
Codes proches ou connexes à surveiller
| Code | Signification résumée | Indicateur ou test utile | 
|---|---|---|
0x80070002 | Fichier ou payload manquant | Traces ERROR_NOT_FOUND, Missing Payload dans CBS.log | 
0x80070003 | Chemin introuvable | Dossiers SoftwareDistribution ou Catroot2 incohérents | 
0x800F0831 | Dépendance de package introuvable | Nom de package Package_* manquant dans CBS.log | 
0x800F0922 | Échec de servicing (souvent réseau/partition système) | Vérifier proxies, espace sur partition système EFI/Recovery | 
Chemin de résolution éprouvé
Avant de commencer : planifiez un créneau de maintenance, effectuez un instantané/backup, exécutez toutes les commandes dans une console Administrateur, et prévoyez un redémarrage.
Résumé des actions recommandées
| Étape | Action | But / Commentaire | 
|---|---|---|
| Exécuter l’utilitaire de résolution des problèmes Windows Update | Paramètres ▶ Mise à jour & sécurité ▶ Dépannage ▶ Windows Update | Corrige automatiquement des paramètres et réinitialise des composants basiques. | 
| Réinitialiser manuellement les services Windows Update | Arrêt des services, purge de SoftwareDistribution et Catroot2, relance. | Force la reconstruction de caches et métadonnées corrompus. | 
| Vérifier l’intégrité du système | sfc /scannow puis DISM /Online /Cleanup-Image /RestoreHealth | Répare fichiers système et magasin de composants. | 
| Appliquer la SSU récente puis la LCU hors‑ligne | Télécharger les .msu et installer via wusa ou dism | L’absence de SSU à jour est une cause récurrente de 0x80070002. | 
| Contrôler heure, espace disque et proxy | Vérifications NTP, quotas, exclusions ou désactivation temporaire du proxy/SSL inspection | Évite les téléchargements tronqués et erreurs de hash. | 
Analyser CBS.log et WindowsUpdate.log | Rechercher ERROR_NOT_FOUND / Missing Payload / package précis | Permet une remédiation ciblée (payload manquant, Pending, dépendance). | 
| Relancer depuis SCCM ou en mode sans échec réseau | Neutralise les interférences tierces et libère des verrous | Augmente le taux de réussite. | 
| Recours final : réparation sur place | Lancer setup.exe du média Server 2019 en conservant rôles et données | Répare le noyau/servicing sans réinstallation complète. | 
Exécuter l’utilitaire de résolution des problèmes
Commencez par le dépanneur intégré. Il répare des autorisations, réenregistre des composants et redémarre des services. Redémarrez le serveur après application des correctifs proposés, puis retentez l’installation de la mise à jour cumulative.
Réinitialiser manuellement Windows Update et BITS
Utilisez la séquence suivante dans Invite de commandes (Admin). Elle arrête les services, nettoie les files BITS, renomme les caches et relance le tout.
net stop wuauserv
net stop cryptSvc
net stop bits
net stop msiserver
sc queryex trustedinstaller | find /I "STATE"
sc stop trustedinstaller
del /q "%ALLUSERSPROFILE%\Microsoft\Network\Downloader\qmgr*.dat"
ren %SystemRoot%\SoftwareDistribution SoftwareDistribution.old
ren %SystemRoot%\System32\catroot2 Catroot2.old
net start msiserver
net start bits
net start cryptSvc
net start wuauserv
sc start trustedinstaller 
Astuce : si le dossier SoftwareDistribution.old occupe beaucoup d’espace, supprimez‑le après redémarrage (une fois confirmé que Windows Update fonctionne).
Vérifier et réparer l’intégrité système
Le moteur CBS s’appuie sur le magasin de composants WinSxS. S’il est corrompu, les LCU échouent.
sfc /scannow
DISM /Online /Cleanup-Image /CheckHealth
DISM /Online /Cleanup-Image /ScanHealth
DISM /Online /Cleanup-Image /RestoreHealth
sfc /scannow
  
Relancez sfc après DISM /RestoreHealth pour valider la correction. Les journaux se trouvent dans C:\Windows\Logs\CBS\CBS.log et C:\Windows\Logs\DISM\dism.log.
Installer la SSU récente puis la LCU hors‑ligne
Sur des serveurs qui n’ont pas été patchés depuis longtemps, l’installation explicite de la Servicing Stack Update (SSU) la plus récente avant la LCU résout la majorité des cas 0x80070002. Téléchargez les packages .msu adaptés à l’édition et à l’architecture du serveur et installez‑les hors‑ligne (déconnectez éventuellement le réseau pour éviter une détection concurrente).
wusa.exe "C:\Temp\Windows10.0-KB<SSU>-x64.msu" /quiet /norestart
wusa.exe "C:\Temp\Windows10.0-KB<LCU>-x64.msu" /quiet /norestart
  
Si wusa échoue, tentez avec DISM :
DISM /Online /Add-Package /PackagePath:"C:\Temp\Windows10.0-KB<SSU_ou_LCU>-x64.msu" /NoRestart
  
Remarque : sur certaines builds, les LCU récentes intègrent déjà la SSU. Néanmoins, installer d’abord la SSU reste sûr et efficace pour débloquer des piles très en retard.
Vérifier l’heure, l’espace disque et le proxy
- Horloge : un décalage casse la validation des signatures. 
w32tm /query /status w32tm /resync - Espace disque : viser au moins 4 Go libres sur 
C:pour décompresser les packages.fsutil volume diskfree C: - Proxy/SSL : désactivez temporairement l’inspection SSL ou mettez en liste blanche les domaines Windows Update côté proxy. Vérifiez la configuration système : 
netsh winhttp show proxy netsh winhttp reset proxy 
Analyser les journaux CBS et Windows Update
Générez un WindowsUpdate.log exploitable et ciblez les motifs utiles.
PowerShell
Get-WindowsUpdateLog -LogPath "$env:USERPROFILE\Desktop\WindowsUpdate.log"
cmd
findstr /i "ERROR_NOT_FOUND Missing Payload 0x80070002 0x800F" "%windir%\Logs\CBS\CBS.log" > "%USERPROFILE%\Desktop\cbs_errors.txt" 
Repérez les noms de packages (Package_for_RollupFix~31bf...) ou des fichiers introuvables (.manifest, .cat) pour une remédiation ciblée (réinstaller la dépendance manquante, purger un état en attente, etc.).
Réessayer via SCCM ou en mode sans échec réseau
Après nettoyage et réparation, relancez l’installation depuis la console SCCM (action Retry). Si des agents tiers verrouillent des fichiers, utilisez le mode sans échec avec prise en charge réseau :
bcdedit /set {current} safeboot network
shutdown /r /t 0
  
Installez le package, puis revenez en mode normal :
bcdedit /deletevalue {current} safeboot
shutdown /r /t 0
  
Recours final par réparation sur place
Insérez un média Windows Server 2019 correspondant à l’édition et au niveau de patch le plus proche, puis lancez setup.exe en choisissant Conserver fichiers, applications et rôles. Cette réparation réécrit le servicing et le noyau sans reconfiguration complète.
Cas pratiques et diagnostics ciblés
États en attente et fichiers bloquants
Si une mise à jour a laissé le système en état « Pending », nettoyez prudemment :
DISM /Online /Cleanup-Image /RevertPendingActions
  
Si Pending.xml persiste dans C:\Windows\WinSxS, renommez‑le uniquement si TrustedInstaller est arrêté et qu’aucune installation n’est en cours :
sc stop trustedinstaller
takeown /f "C:\Windows\WinSxS\pending.xml"
icacls "C:\Windows\WinSxS\pending.xml" /grant administrators:F
ren "C:\Windows\WinSxS\pending.xml" "pending.xml.bak"
  
Contrôlez ensuite les clés de redémarrage en attente (à ne pas supprimer à la légère en production) :
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPendingHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired
Dépendances manquantes
Si CBS.log mentionne un package introuvable (0x800F0831), identifiez le KB de dépendance et installez‑le hors‑ligne avant la LCU cible. Pour lister les packages présents/absents :
dism /online /get-packages /format:table > "%USERPROFILE%\Desktop\packages.txt"
  
Réenregistrement des composants Windows Update
Sur des cas tenaces, réenregistrez des bibliothèques de mise à jour (optionnel) :
for %i in (atl.dll urlmon.dll mshtml.dll wuapi.dll wuaueng.dll wups.dll wups2.dll wuwebv.dll qmgr.dll qmgrprxy.dll) do regsvr32 /s %i
  
Nettoyage du magasin de composants
Libérez de l’espace et supprimez des composants supersédés :
DISM /Online /Cleanup-Image /StartComponentCleanup
DISM /Online /Cleanup-Image /StartComponentCleanup /ResetBase
  
Attention : /ResetBase rend impossible la désinstallation d’anciennes mises à jour.
Spécificités WSUS et SCCM
- Files BITS : nettoyez les files cassées du compte Local System comme montré plus haut (
qmgr*.dat), puis redémarrez BITS. - Agent SCCM : vérifiez l’état du client et relancez une réparation si besoin : 
"C:\Windows\CCM\ccmrepair.exe" - Stratégies contradictoires : évitez d’activer simultanément « Windows Update for Business » et un point WSUS/SUP SCCM. Contrôlez les GPO « Spécifier l’emplacement intranet du service de mise à jour Microsoft » et « Ne pas se connecter aux emplacements Windows Update sur Internet ».
 - Limites et points de distribution : assurez‑vous que le contenu est disponible dans les limites réseau du client et que le package n’est pas en statut Content Not Found.
 - Réinitialisation de détection : forcez une détection rapide et la réévaluation du déploiement : 
Control smscfgrc (ouvre le panneau client) PowerShell Invoke-WmiMethod -Namespace root\ccm -Class SMS_Client -Name TriggerSchedule -ArgumentList "{00000000-0000-0000-0000-000000000113}" # Software Updates Scan Invoke-WmiMethod -Namespace root\ccm -Class SMS_Client -Name TriggerSchedule -ArgumentList "{00000000-0000-0000-0000-000000000108}" # Software Updates Deployment 
Bonnes pratiques pour éviter la récurrence
- Plan de patching régulier : un trop grand écart entre SSU/LCU augmente la probabilité de 0x80070002.
 - Tâches d’entretien : programmez 
StartComponentCleanupmensuel et purgez les dossiers temporaires. - Exclusions antivirus temporaires : pendant l’installation, excluez 
C:\Windows\SoftwareDistribution,%windir%\Logs\CBSetC:\Windows\Temp. - Surveillance : mettez en place des alertes sur l’espace libre, la dérive NTP et les échecs BITS.
 - Compatibilité des rôles : sur IIS, mettez à jour d’abord les extensions tierces (URL Rewrite, ARR) si elles sont en attente.
 
Script de remédiation guidée
Le fragment PowerShell ci‑dessous automatise un diagnostic de base et exécute les opérations de remise à zéro les plus sûres. Adaptez‑le à vos contraintes de sécurité.
PowerShell
# Exécuter en tant qu'Administrateur
$ErrorActionPreference = "Stop"
Write-Host "Pré‑checks..." -ForegroundColor Cyan
$drive = Get-PSDrive -Name C
"{0:N2} Go libres sur C:" -f ($drive.Free/1GB) | Write-Host
if($drive.Free -lt 4GB){ Write-Warning "Moins de 4 Go libres sur C:, libérez de l'espace." }
Write-Host "Horloge et NTP..." -ForegroundColor Cyan
w32tm /query /status | Out-Host
Write-Host "Arrêt des services Update/BITS..." -ForegroundColor Cyan
'bits','wuauserv','cryptsvc','msiserver' | ForEach-Object { Stop-Service $_ -Force -ErrorAction SilentlyContinue }
sc.exe stop trustedinstaller | Out-Null
Write-Host "Nettoyage BITS..." -ForegroundColor Cyan
Remove-Item "$env:ALLUSERSPROFILE\Microsoft\Network\Downloader\qmgr*.dat" -Force -ErrorAction SilentlyContinue
Write-Host "Renommage des caches..." -ForegroundColor Cyan
Rename-Item "$env:windir\SoftwareDistribution" "SoftwareDistribution.old" -ErrorAction SilentlyContinue
Rename-Item "$env:windir\System32\catroot2" "Catroot2.old" -ErrorAction SilentlyContinue
Write-Host "Redémarrage des services..." -ForegroundColor Cyan
'msiserver','bits','cryptsvc','wuauserv' | ForEach-Object { Start-Service $_ -ErrorAction SilentlyContinue }
sc.exe start trustedinstaller | Out-Null
Write-Host "Intégrité système (SFC/DISM)..." -ForegroundColor Cyan
sfc /scannow
DISM /Online /Cleanup-Image /ScanHealth
DISM /Online /Cleanup-Image /RestoreHealth
Write-Host "Extraction d'indices CBS..." -ForegroundColor Cyan
$dest="$env:USERPROFILE\Desktop\cbs_errors.txt"
cmd /c 'findstr /i "ERROR_NOT_FOUND Missing Payload 0x80070002 0x800F" "%windir%\Logs\CBS\CBS.log" > "'+$dest+'"'
Write-Host "Terminé. Consultez $dest" -ForegroundColor Green 
Check‑list finale après remédiation
- La LCU et, le cas échéant, la SSU s’installent sans erreur et le serveur redémarre proprement.
 Get-WindowsUpdateLogne montre plus d’échecs récents.dism /online /get-packagesrépertorie la LCU attendue à l’état Installé.- Les dossiers 
SoftwareDistribution.oldetCatroot2.oldsont supprimés. - Les GPO/proxies ont retrouvé leur configuration nominale et les exclusions AV temporaires sont retirées.
 
Questions fréquentes
Faut‑il redémarrer entre chaque étape ?
Un redémarrage après la réinitialisation de Windows Update et après l’installation de la SSU/LCU est recommandé. Évitez d’interrompre le processus lorsque TrustedInstaller travaille. Peut‑on installer la LCU sans la SSU ?
Sur des versions récentes, la SSU peut être intégrée à la LCU. Toutefois, sur des serveurs en fort retard, installer la SSU séparément avant la LCU résout de nombreux échecs 0x80070002. Que faire si DISM /RestoreHealth échoue ?
Fournissez une source fiable à DISM (ISO Server 2019 correspondant) et limitez l’accès à Internet pour forcer l’utilisation de la source locale :
DISM /Online /Cleanup-Image /RestoreHealth /Source:wim:D:\sources\install.wim:2 /LimitAccess
    
Pourquoi l’erreur se manifeste via SCCM mais pas manuellement ?
Les stratégies de déploiement, les limites de contenu et l’agent BITS peuvent influer. Validez hors‑ligne avec wusa ou dism pour isoler le problème agent vs système.
Conclusion actionnable
Dans l’immense majorité des cas, la combinaison réinitialisation complète de Windows Update + SFC/DISM + installation hors‑ligne de la SSU puis de la LCU supprime la cause de 0x80070002. Appuyez systématiquement l’analyse par CBS.log pour confirmer la correction et, si nécessaire, conclure par une réparation sur place qui rétablit le moteur de servicing sans perte de rôles.
Annexe : procédure détaillée pas‑à‑pas
- Dépannage Windows Update : exécutez le dépanneur et redémarrez.
 - Réinitialisation manuelle :
- Arrêtez 
wuauserv,bits,cryptsvc,msiserver,TrustedInstaller. - Supprimez 
qmgr*.dat, renommezSoftwareDistributionetCatroot2. - Relancez les services.
 
 - Arrêtez 
 - Intégrité : 
sfcpuisDISM, recommencez jusqu’à ce que les erreurs disparaissent. - Installation hors‑ligne : SSU puis LCU via 
wusaoudism. - Contrôles environnement : NTP, proxy, espace disque, exclusions AV.
 - Analyse journaux : ciblez ERROR_NOT_FOUND et identifiez les packages.
 - Relance SCCM / mode sans échec.
 - Réparation sur place : conservez fichiers et rôles.
 
Récapitulatif en un coup d’œil
| Problème observé | Cause probable | Action immédiate | 
|---|---|---|
| Échec LCU avec 0x80070002 | Cache Update corrompu | Réinitialiser services, renommer SoftwareDistribution/Catroot2 | 
| Erreur récurrente après redémarrage | SSU manquante | Installer la SSU puis la LCU hors‑ligne | 
| Messages Missing Payload | Composants WinSxS manquants | DISM /RestoreHealth avec source ISO | 
| Téléchargements lents ou interrompus | Proxy / inspection SSL | Neutraliser temporairement ou mettre en liste blanche | 
| Échecs côté SCCM uniquement | Agent / contenu indisponible | Réparer client, valider les points de distribution | 
Ressources utiles côté administrateur
- Script d’automatisation : le script ResetWUWindows.ps1 (officiel) combine l’arrêt des services, la purge des caches et la réinitialisation des composants.
 - Exclusions antivirus : ajoutez temporairement 
C:\Windows\SoftwareDistribution,%windir%\Logs\CBS,C:\Windows\Temppuis retirez‑les après succès. - Compatibilité des rôles : sur un serveur IIS, mettez à jour d’abord URL Rewrite/ARR s’ils sont en attente.
 - Suivi SCCM : tenez l’agent à jour, vérifiez les limites et la disponibilité du contenu, et écartez toute stratégie contradictoire.
 

