Corriger l’erreur 0x80070005 sur Windows Server 2022 pour Windows Update — Guide complet et scripts

Vous voyez l’erreur 0x80070005 (« Access Denied ») lors de l’installation de mises à jour sur Windows Server 2022 ? Suivez ce plan d’action étape par étape, avec commandes prêtes à copier et contrôles GPO/WSUS/EDR, pour remettre Windows Update en service.

Sommaire

Vue d’ensemble du problème

L’erreur 0x80070005 signifie qu’une opération a été refusée pour cause d’autorisations insuffisantes ou de verrouillage d’une ressource. Sur Windows Server 2022, cela se produit fréquemment lorsque le service Windows Update n’a pas le droit d’écrire dans ses répertoires (SoftwareDistribution, catroot2) ou lorsque des stratégies de groupe, un agent antivirus/EDR, un proxy ou WSUS interfèrent avec le flux de mise à jour. La bonne approche : appliquer une réinitialisation contrôlée des composants, réparer l’image, valider les droits et réessayer.

Avant de commencer

  • Planifier un créneau de maintenance et, si VM, créer un snapshot.
  • Vérifier l’espace disque libre (au moins 6–8 Go recommandés sur C: pour les mises à jour cumulatives).
  • Exécuter toutes les commandes dans une Invite de commandes ou une console PowerShell « Exécuter en tant qu’administrateur ».
  • Pour un serveur Core, les mêmes commandes s’appliquent via la console locale, Windows Admin Center ou une session PowerShell distante.

Procédure standard recommandée

Voici une réponse opérationnelle qui résout la majorité des cas. Exécutez chaque ligne dans une console « Admin ».

ÉtapeActionDétails & observations utiles
Utilitaire Windows UpdateOuvrir Paramètres › Mise à jour & sécurité › Dépanner › Dépanneurs supplémentaires › Windows Update.Corrige automatiquement la plupart des incohérences simples de Windows Update.
Réinitialiser les composantsDans Invite de commandes (Admin) :net stop wuauserv net stop cryptSvc net stop bits net stop msiserver ren C:\Windows\SoftwareDistribution SoftwareDistribution.old ren C:\Windows\System32\catroot2 catroot2.old net start wuauserv net start cryptSvc net start bits net start msiserver Renommer SoftwareDistribution et catroot2 force Windows Update à recréer ses dépôts et métadonnées.
Nettoyer et réparer l’imageDans la même fenêtre Admin :dism /online /cleanup-image /startcomponentcleanup dism /online /cleanup-image /restorehealth startcomponentcleanup réduit le magasin WinSxS ; restorehealth répare les composants endommagés via Windows Update ou une source locale.
Vérification SFCExécuter :sfc /scannow Analyse l’intégrité des fichiers système protégés et restaure ceux défectueux.
Vérifier droits & GPOConfirmer que le compte courant est Administrateur local. Contrôler les ACL de C:\Windows, C:\Windows\SoftwareDistribution, C:\Windows\System32\catroot2. Auditer les GPO susceptibles de désactiver Windows Update ou de restreindre BITS/WUA.L’erreur 0x80070005 est souvent liée à des autorisations durcies par une stratégie ou par un antivirus/EDR.
Contrôler antivirus/EDRDésactiver temporairement la protection temps réel ou créer des exclusions pour wuauclt.exe, svchost.exe (wuauserv, bits) et les dossiers SoftwareDistribution, catroot2.Certains agents bloquent l’écriture dans ces emplacements et déclenchent l’erreur.
Redémarrer et réessayerRedémarrer le serveur puis exécuter Rechercher des mises à jour.Valide la prise en compte de toutes les modifications précédentes.

Commandes utiles prêtes à copier

Version PowerShell de la réinitialisation

# À exécuter dans PowerShell en tant qu'Administrateur
Stop-Service wuauserv, bits, cryptsvc, msiserver -ErrorAction SilentlyContinue
Rename-Item -Path "C:\Windows\SoftwareDistribution" -NewName "SoftwareDistribution.old" -ErrorAction SilentlyContinue
Rename-Item -Path "C:\Windows\System32\catroot2" -NewName "catroot2.old" -ErrorAction SilentlyContinue
Start-Service wuauserv, bits, cryptsvc, msiserver
Get-Service wuauserv,bits,cryptsvc,msiserver | Format-Table Status,Name,DisplayName

Analyse du magasin de composants

dism /online /cleanup-image /analyzecomponentstore

Restauration hors ligne si Windows Update est indisponible

Montez l’ISO de Windows Server 2022, repérez install.wim (ou install.esd) puis :

dism /online /cleanup-image /restorehealth /source:WIM:D:\sources\install.wim:1 /limitaccess

Adaptez la lettre de lecteur et l’index d’édition selon votre ISO.

Diagnostic avancé et vérifications ciblées

Services requis et état

  • Windows Update (wuauserv)
  • BITS (bits)
  • Cryptographic Services (cryptSvc)
  • Windows Installer (msiserver)
  • Windows Modules Installer (TrustedInstaller)
sc query wuauserv
sc query bits
sc query cryptsvc
sc query msiserver
sc query trustedinstaller

Journaux à consulter

  • C:\Windows\Logs\CBS\CBS.log
  • C:\Windows\Logs\DISM\dism.log
  • Get-WindowsUpdateLog génère WindowsUpdate.log à partir des ETW.
  • Observateur d’événements › Applications and Services Logs > Microsoft > Windows > WindowsUpdateClient > Operational

Vérifier les droits NTFS sur les dossiers clés

Les principaux identifiants (SYSTEM, Administrateurs, TrustedInstaller) doivent avoir contrôle suffisant sur :

  • C:\Windows
  • C:\Windows\SoftwareDistribution
  • C:\Windows\System32\catroot2
icacls C:\Windows\SoftwareDistribution
icacls C:\Windows\System32\catroot2

Pour rétablir un héritage standard sur un dossier corrompu :

icacls "C:\Windows\SoftwareDistribution" /inheritance:e

Contrôle BITS

# PowerShell
Get-BitsTransfer -AllUsers | Format-Table Id, JobState, DisplayName
Get-BitsTransfer -AllUsers | Remove-BitsTransfer -Confirm:$false

Réseau, proxy et résolution DNS

  • Afficher/réinitialiser la configuration WinHTTP : netsh winhttp show proxy puis netsh winhttp reset proxy si nécessaire.
  • Tester la connectivité sortante (ports 80/443) vers Internet ou le WSUS.
  • Autoriser, si filtrage sortant, les domaines de mise à jour Microsoft typiques : *.windowsupdate.com, *.update.microsoft.com, *.download.windowsupdate.com, *.delivery.mp.microsoft.com, sls.update.microsoft.com, ctldl.windowsupdate.com.
  • Vérifier que TLS 1.2 est activé si l’environnement durcit les protocoles.

GPO susceptibles de bloquer Windows Update

Inspecter les objets de stratégie :

  • Computer Configuration › Administrative Templates › Windows Components › Windows Update (ex. : « Désactiver l’accès à toutes les fonctionnalités de Windows Update », « Ne pas se connecter aux emplacements Windows Update sur Internet »).
  • Delivery Optimization si blocage des téléchargements.
  • Si WSUS est utilisé, valider « Spécifier l’emplacement du service de mise à jour Microsoft sur un intranet ».

Cas d’usage WSUS

Dans un environnement WSUS, l’erreur 0x80070005 peut survenir si la machine n’est pas approuvée pour une mise à jour, si le catalogue est désynchronisé ou si les stratégies forcent un serveur invalide.

  1. Sur WSUS, synchroniser les catalogues et approuver les mises à jour requises.
  2. Sur le serveur concerné, lancer une détection : wuauclt /detectnow usoclient StartScan
  3. Si WSUS doit être contourné ponctuellement (test), désactiver temporairement la valeur UseWUServer puis redémarrer wuauserv.

Astuce : valider la résolution DNS, le port 8530/8531 et l’URL WSUS dans le Registre : HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate (WUServer, WUStatusServer).

Serveur Core ou environnement sans interface graphique

Sur Server Core, utilisez sconfig pour déclencher la recherche/installation des mises à jour et appliquer les exclusions proxy. Les commandes de réinitialisation DISM/SFC montrées plus haut restent identiques.

Exemple de flux opérationnel en PowerShell

# Server Core - progression rapide
sconfig  # puis choisir les options Windows Update
# ou bien :
Stop-Service wuauserv,bits,cryptsvc,msiserver
Rename-Item C:\Windows\SoftwareDistribution SoftwareDistribution.old -ErrorAction SilentlyContinue
Rename-Item C:\Windows\System32\catroot2 catroot2.old -ErrorAction SilentlyContinue
Start-Service wuauserv,bits,cryptsvc,msiserver
dism /online /cleanup-image /restorehealth
sfc /scannow
usoclient StartScan

Informations complémentaires utiles

  • Origine courante : privilèges refusés à wuauserv ou BITS lors de la création/modification de fichiers.
  • Logs : consulter C:\Windows\Logs\CBS\CBS.log et générer C:\Windows\WindowsUpdate.log via Get-WindowsUpdateLog pour identifier la ressource exacte bloquée.
  • Proxy / Pare-feu : si le serveur passe par un proxy ou un filtrage sortant, autoriser les domaines Microsoft Update et vérifier les certificats racine.
  • Serveur WSUS : synchroniser les catalogues, approuver les mises à jour requises puis exécuter wuauclt /detectnow ou usoclient StartScan sur le serveur concerné.

En suivant systématiquement ces étapes, l’erreur 0x80070005 est résolue dans la grande majorité des cas, et Windows Update retrouve un fonctionnement normal sur Windows Server 2022.

Arbre de décision pratique

SymptômeVérification rapideAction conseillée
0% téléchargé/installationServices actifs ? BITS a des jobs en erreur ?Réinitialisation WU, purge BITS, redémarrage, relancer la recherche.
0x80070005 immédiatACL de SoftwareDistribution héritées ?icacls pour rétablir l’héritage, renommer le dossier, relancer WU.
Erreur DISM 0x800f081fSource réseau/ISO disponible ?Utiliser /Source:WIM:<lettre>:\sources\install.wim:<index> /LimitAccess.
Environnement WSUSApprobations et synchronisation à jour ?Approuver, synchroniser, usoclient StartScan, vérifier les clés Registre WSUS.
Serveur durci/EDRExclusions WU présentes ?Ajouter exclusions sur processus et dossiers, réessayer.

Réglages réseau et sécurité à connaître

  • Heure et NTP : un décalage significatif peut invalider TLS et les signatures de contenu.
  • Certificats : sur sites isolés, s’assurer que la mise à jour des racines de confiance est opérationnelle.
  • Filtrage : les inspection proxy SSL peuvent perturber la télémetrie ou la vérification de signature.

Bonnes pratiques en production

  • Documenter chaque action, conserver les journaux (CBS.log, WindowsUpdate.log).
  • Ne pas supprimer catroot2 à chaud : toujours arrêter cryptSvc d’abord.
  • Privilégier DISM/SFC aux scripts « magiques » qui réenregistrent des DLL en masse.
  • En cluster/production critique, appliquer les changements nœud par nœud.

Solution de repli « legacy » (dernier recours)

Si tout échoue et uniquement en dernier recours, réenregistrer les composants Windows Update :

for %i in (wuapi.dll wuaueng.dll wups.dll wups2.dll wuwebv.dll wucltux.dll) do regsvr32 /s %i

Puis relancer la réinitialisation des composants et les commandes DISM/SFC.

FAQ rapide

Pourquoi l’erreur 0x80070005 survient-elle spécialement sur Windows Update ?

Parce que WU écrit dans des dossiers système protégés, met à jour des catalogues signés et s’appuie sur des services sous comptes spéciaux. Le moindre durcissement d’ACL, blocage EDR ou erreur de cache peut générer un « Access Denied ».

Dois-je supprimer SoftwareDistribution.old et catroot2.old ensuite ?

Oui, après vérification que le nouveau cycle de mise à jour fonctionne, vous pouvez supprimer ces dossiers pour récupérer l’espace.

Comment déclencher une détection immédiate ?

Utiliser usoclient StartScan (ou wuauclt /detectnow en WSUS). L’exécution doit se faire en console « Admin ».

Que faire si sfc /scannow ne répare rien et que l’erreur persiste ?

Revoir les GPO, les exclusions EDR, l’accès au proxy/WSUS et tenter une réparation DISM hors ligne à partir de l’ISO correspondant à la build du serveur.

Script de remédiation de bout en bout

Collez le script ci-dessous dans PowerShell (Admin) pour automatiser les étapes 2 à 4 et produire un résumé :

# Remediation Windows Update 0x80070005 - Windows Server 2022
$ErrorActionPreference = 'SilentlyContinue'
Write-Host "Arrêt des services WU/BITS/Crypto/MSI..."
Stop-Service wuauserv,bits,cryptsvc,msiserver

Write-Host "Renommage des caches..."
Rename-Item C:\Windows\SoftwareDistribution SoftwareDistribution.old -ErrorAction SilentlyContinue
Rename-Item C:\Windows\System32\catroot2 catroot2.old -ErrorAction SilentlyContinue

Write-Host "Redémarrage des services..."
Start-Service wuauserv,bits,cryptsvc,msiserver

Write-Host "Nettoyage du magasin de composants..."
dism /online /cleanup-image /startcomponentcleanup | Out-Null

Write-Host "Restauration de l'image (peut être long)..."
dism /online /cleanup-image /restorehealth | Out-Null

Write-Host "Vérification SFC..."
sfc /scannow

Write-Host "Etat services :"
Get-Service wuauserv,bits,cryptsvc,msiserver | Format-Table Status,Name

Write-Host "Termine. Redémarrez le serveur puis lancez la recherche de mises à jour."

Récapitulatif

La combinaison réinitialisation des composants + réparation DISM/SFC + validation des droits/GPO/EDR résout la plupart des 0x80070005 sur Windows Server 2022. En contexte WSUS ou proxy strict, complétez par les contrôles réseau et de stratégie, puis relancez une détection. Conservez les journaux de diagnostic pour la traçabilité et appliquez ces bonnes pratiques lors des prochains cycles de mises à jour.

Sommaire