Windows Server 2022 sur serveur Lenovo affiche l’erreur Windows Update 0x80070005 (« Accès refusé »). Ce guide propose une procédure fiable et exhaustive, avec commandes prêtes à copier, pour rétablir les mises à jour, que vous utilisiez Windows Update ou WSUS.
Vue d’ensemble du problème
L’erreur 0x80070005 lors des mises à jour Windows signifie qu’un processus n’a pas eu l’autorisation d’accéder à une ressource : fichier, dossier système, clé de Registre, service ou ressource réseau. Sur Windows Server 2022, cela se produit le plus souvent dans ces cas :
- Contexte d’exécution non administrateur (UAC, session distante non élevée, service compte verrouillé).
- Composants Windows Update corrompus (dossiers
SoftwareDistribution
,Catroot2
, files BITS). - Stratégies locales/domaine (GPO WSUS obligatoire, Windows Update désactivé, SRP/AppLocker.
- Fichiers système endommagés (corruption du magasin de composants).
- Agent de sécurité (antivirus/EDR/pare-feu) qui verrouille des fichiers ou filtre le trafic.
- Horloge non synchronisée qui invalide la négociation TLS et la validation de signatures.
- Firmware/pilotes Lenovo obsolètes (UEFI/BIOS, RAID, NIC) provoquant des erreurs d’I/O.
La bonne nouvelle : en enchaînant méthodiquement les contrôles ci‑dessous, la majorité des cas se résolvent sans réinstallation.
Plan d’action rapide (récapitulatif)
Axe d’action | Objectif | Commandes / opérations principales |
---|---|---|
Vérifier les droits et le contexte d’exécution | S’assurer que le compte dispose des privilèges d’administrateur et qu’aucune stratégie de restriction n’intervient. | Exécuter Windows Update depuis une session « Invite de commandes (Admin) » ; contrôler les appartenances aux groupes Administrateurs et Opérateurs de sauvegarde. |
Utiliser l’utilitaire de résolution Windows Update | Détecter et corriger automatiquement les anomalies courantes (services, clés de registre, ACL). | Paramètres → Mise à jour et sécurité → Dépannage → Windows Update → Exécuter. |
Réinitialiser manuellement les composants Windows Update | Purger le cache de téléchargement corrompu et recréer les dossiers système. | cmd net stop wuauserv net stop cryptSvc net stop bits net stop msiserver ren %SystemRoot%\SoftwareDistribution SoftwareDistribution.old ren %SystemRoot%\System32\catroot2 catroot2.old net start wuauserv net start cryptSvc net start bits net start msiserver |
Contrôler les stratégies locales ou de domaine | Éliminer une éventuelle restriction définie par GPO. | gpedit.msc → Configuration ordinateur → Modèles d’administration → Composants Windows → Windows Update. Désactiver toute stratégie « Désactiver Windows Update » ou « Accepter uniquement WSUS ». |
Réparer les fichiers système | Remplacer les fichiers corrompus qui bloquent la mise à jour. | cmd sfc /scannow DISM /Online /Cleanup-Image /RestoreHealth |
Examiner les journaux et l’Observateur d’événements | Identifier la ressource ou le chemin sur lequel l’accès est refusé. | Get-WindowsUpdateLog (Windows Server 2022 reconstruit le log à partir d’ETW) ; Eventvwr.msc → Journaux Windows → Système. |
Écarter firewall/antivirus | Vérifier qu’aucun agent de sécurité n’intercepte le trafic ou ne verrouille des fichiers. | Désactiver temporairement la protection en temps réel ; ouvrir les ports 80/443 vers *.update.microsoft.com si filtrage réseau. |
Installer manuellement les mises à jour | Contourner Windows Update en cas de blocage persistant. | Télécharger le dernier Servicing Stack Update (SSU) puis le Cumulative Update correspondant sur le Microsoft Update Catalog et les installer (.msu ) à la main. |
Pré‑requis et bonnes pratiques avant d’agir
- Fenêtre de maintenance et sauvegarde récente (snapshot VM, sauvegarde système).
- Session élevée : Invite de commandes (Admin) ou PowerShell (Admin).
- Connexion RDP stable et onduleur opérationnel pour éviter une interruption en plein correctif.
- Espace disque : au moins 10 Go libres sur le volume système (
C:\
).
Étapes détaillées et commandes prêtes à l’emploi
Vérifier les droits et le contexte d’exécution
Un simple lancement non élevé peut déclencher 0x80070005. Confirmez :
whoami /groups | findstr /I "Administrateurs"
whoami /priv
net session & rem Renvoie « Accès refusé » si vous n’êtes pas admin
Si le serveur est membre d’un domaine, vérifiez l’appartenance à Domain Admins (si pertinent) et les restrictions UAC. Sur une session distante, lancez : Menu Démarrer → tapez « cmd » → clic droit → Exécuter en tant qu’administrateur.
Utiliser le dépanneur Windows Update
Il répare automatiquement des ACL erronées, redémarre des services et réinitialise certaines clés. Accès : Paramètres → Mise à jour et sécurité → Dépannage → Windows Update. Sur Server Core, utilisez :
msdt.exe /id WindowsUpdateDiagnostic
Réinitialiser complètement Windows Update (méthode manuelle)
Cette remise à zéro corrige la grande majorité des erreurs d’accès. Utilisez cmd ou PowerShell : Méthode CMD
net stop wuauserv
net stop cryptSvc
net stop bits
net stop msiserver
del /q /f "%ALLUSERSPROFILE%\Microsoft\Network\Downloader\qmgr*.dat"
ren %SystemRoot%\SoftwareDistribution SoftwareDistribution.old
ren %SystemRoot%\System32\catroot2 catroot2.old
netsh winhttp reset proxy
net start wuauserv
net start cryptSvc
net start bits
net start msiserver
Méthode PowerShell
Stop-Service -Name wuauserv,cryptsvc,bits,msiserver -Force
Get-BitsTransfer -AllUsers | Remove-BitsTransfer -Confirm:$false
Remove-Item "$env:SystemRoot\SoftwareDistribution" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item "$env:SystemRoot\System32\catroot2" -Recurse -Force -ErrorAction SilentlyContinue
netsh winhttp reset proxy
Start-Service -Name wuauserv,cryptsvc,bits,msiserver
Astuce : si la suppression échoue avec « Accès refusé », contrôlez les ACL :
icacls "%SystemRoot%\SoftwareDistribution"
icacls "%SystemRoot%\System32\catroot2"
Les comptes SYSTEM et NT SERVICE\TrustedInstaller doivent avoir un contrôle total.
Contrôler les stratégies locales/domaine (WSUS, désactivation de WU)
Générez un rapport pour savoir quelles GPO s’appliquent :
gpresult /h C:\Temp\gpresult-wu.html
start C:\Temp\gpresult-wu.html
Puis vérifiez ces clés :
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate /s
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU /s
Clés à connaître : UseWUServer
(1 = WSUS obligatoire), WUServer
, WUStatusServer
. Pour forcer temporairement Windows Update (Internet) :
sc stop wuauserv
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer /t REG_DWORD /d 0 /f
sc start wuauserv
Sur un environnement WSUS, validez la connectivité :
Test-NetConnection -ComputerName <NomServeurWSUS> -Port 8530
netsh winhttp show proxy
Réparer les fichiers système (SFC/DISM)
Executez SFC, puis DISM si nécessaire :
sfc /scannow
DISM /Online /Cleanup-Image /ScanHealth
DISM /Online /Cleanup-Image /RestoreHealth
Si DISM échoue, montez une source saine (install.wim
) et utilisez /Source
; redémarrez ensuite le serveur.
Examiner les journaux pour trouver l’origine de « Accès refusé »
- Journal Windows Update :
PowerShell
Get-WindowsUpdateLog # Le fichier est reconstruit sur le Bureau de l’utilisateur
- Observateur d’événements : « Journaux des applications et des services → Microsoft → Windows → WindowsUpdateClient → Operational » (événements 20, 25, 31, 34). Vérifiez aussi « Système » (erreurs BITS, WinHTTP), « Setup » et
C:\Windows\Logs\CBS\CBS.log
.
Écarter firewall/antivirus/EDR
Pour un test court (en maintenance), désactivez et excluez les répertoires de Windows Update :
PowerShell
Set-MpPreference -DisableRealtimeMonitoring $true
Add-MpPreference -ExclusionPath "$env:SystemRoot\SoftwareDistribution","$env:SystemRoot\System32\catroot2"
Contrôlez la sortie réseau vers *.update.microsoft.com
en HTTP/HTTPS 80/443 :
Test-NetConnection -ComputerName www.microsoft.com -Port 443
Test-NetConnection -ComputerName ctldl.windowsupdate.com -Port 443
Réactivez la protection après le test :
Set-MpPreference -DisableRealtimeMonitoring $false
Installer manuellement SSU puis LCU (plan B sécurisé)
- Identifiez la version et la build :
winver
ousysteminfo
. - Téléchargez le Servicing Stack Update le plus récent pour Windows Server 2022, puis la mise à jour cumulative correspondante (architecture x64) depuis le Microsoft Update Catalog.
- Installez :
wusa.exe "C:\Chemin\KB-SSU.msu" /quiet /norestart wusa.exe "C:\Chemin\KB-LCU.msu" /quiet /norestart
- Redémarrez et exécutez une détection :
UsoClient StartScan UsoClient StartDownload UsoClient StartInstall wuauclt /detectnow /reportnow & rem Pour WSUS
Cas fréquents et correctifs ciblés
Symptôme | Cause probable | Action recommandée |
---|---|---|
0x80070005 juste après « Téléchargement » | ACL incorrectes sur SoftwareDistribution | Réinitialisation WU + icacls pour SYSTEM/TrustedInstaller |
Échec de BITS | File d’attente corrompue | Get-BitsTransfer -AllUsers | Remove-BitsTransfer |
Serveur en DMZ | Proxy/pare-feu bloque 80/443 | netsh winhttp show proxy + règles sortantes |
Serveur relié à WSUS | GPO force WSUS non joignable | Basculer temporairement UseWUServer=0 et tester |
Échec de signature | Horloge désynchronisée > 5 min | w32tm /query /status puis w32tm /resync /force |
Échecs sporadiques d’écriture | Firmware RAID/NIC Lenovo obsolète | Mettre à jour via Lenovo XClarity / media bootable |
Synchronisation horaire (critique pour TLS et signatures)
w32tm /query /status
w32tm /query /configuration
w32tm /resync /force
Assurez-vous que le serveur NTP de référence est atteignable et cohérent (notamment sur contrôleurs de domaine).
Points d’attention spécifiques « serveur Lenovo »
- Mettez à jour firmware/BIOS (UEFI, XClarity Controller/XCC, pilotes chipset, contrôleur RAID, cartes réseau). Utilisez les outils Lenovo (XClarity Essentials/OneCLI, média bootable de mise à jour) pour regrouper les correctifs.
- Vérifiez les journaux RAID/NIC : erreurs disque (ID 153/11/15), timeouts réseau ou firmware peuvent interrompre les écritures de WU.
- Vérifiez la date/heure du BMC (XCC) : un décalage important est un indicateur d’instabilités NTP côté OS.
Server Core et environnements sans GUI
Sur Server Core, utilisez sconfig
pour gérer Windows Update :
sconfig
Choisissez « Télécharger et installer les mises à jour ». Pour un déclenchement manuel :
UsoClient StartScan
UsoClient StartDownload
UsoClient StartInstall
Automatiser (script « Reset-WindowsUpdate.ps1 »)
Microsoft propose un script officiel qui regroupe l’arrêt des services, la purge des dossiers, la réinitialisation BITS et la réparation DISM/SFC. Sur un parc étendu, exécutez‑le en tâche planifiée pendant une fenêtre de maintenance, de préférence avec journalisation centralisée (transcription PowerShell) et contrôle du code de retour.
Checklist de validation après correctifs
- Exécuter une détection et vérifier qu’aucune erreur n’apparaît :
UsoClient StartScan Get-WindowsUpdateLog
- Vérifier l’observateur d’événements (WindowsUpdateClient, BITS) : zéro erreur critique.
- Confirmer l’installation des KB :
dism /online /get-packages | findstr /I "KB" wmic qfe list brief | more
- Réactiver les protections (Defender/EDR), rétablir les GPO WSUS si modifiées.
- Documenter la cause racine (ACL, GPO, proxy, firmware) et les actions appliquées.
Compléments utiles et meilleures pratiques
- BITS et services dépendants : configurez Démarrage automatique pour BITS et Service Cryptographie.
- ACL sur %SystemRoot% : SoftwareDistribution et Catroot2 doivent accorder le contrôle total à SYSTEM et TrustedInstaller.
- Synchronisation de l’heure : écart > 5 min = échecs de validation TLS et 0x80070005.
- Firmware & pilotes Lenovo : maintenez UEFI/BIOS, firmware RAID et NIC à jour via XClarity/outil bootable.
- WSUS/proxy : vérifiez
UseWUServer=1
(HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU
) et la joignabilité du serveur WSUS.
Exemple d’orchestration « tout‑en‑un » (avec journalisation)
À utiliser en session PowerShell élevée, sur un serveur isolé d’abord :
PowerShell
$log = "C:\Temp\WU-Reset-$(Get-Date -f yyyyMMdd-HHmmss).log"
Start-Transcript -Path $log -Force
Try {
Write-Host "Arrêt des services..." ; Stop-Service wuauserv,cryptsvc,bits,msiserver -Force
Write-Host "Purge BITS..." ; Get-BitsTransfer -AllUsers | Remove-BitsTransfer -Confirm:$false
Write-Host "Suppression caches..." ;
Remove-Item "$env:SystemRoot\SoftwareDistribution" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item "$env:SystemRoot\System32\catroot2" -Recurse -Force -ErrorAction SilentlyContinue
Write-Host "Proxy WinHTTP : reset" ; netsh winhttp reset proxy | Out-Null
Write-Host "Réparation image..." ; DISM /Online /Cleanup-Image /RestoreHealth | Out-Null
Write-Host "SFC..." ; sfc /scannow | Out-Null
} Finally {
Write-Host "Redémarrage des services..." ; Start-Service wuauserv,cryptsvc,bits,msiserver
Write-Host "Détection..." ; UsoClient StartScan
Stop-Transcript
Write-Host "Journal : $log"
}
Foire aux questions
Dois‑je réinitialiser les permissions de C:\Windows
?
Non. Ciblez uniquement les dossiers liés à Windows Update (SoftwareDistribution
, Catroot2
). Une réinitialisation globale peut détériorer le serveur.
Comment distinguer un problème WSUS d’un problème local ?
Basculez temporairement UseWUServer=0
et relancez un scan. Si les mises à jour s’installent, retournez au WSUS et corrigez proxy, approbations de mises à jour, synchronisation de catalogue.
Que vérifier côté stockage Lenovo ?
État des disques, batterie du contrôleur, cache d’écriture, et firmware. Les erreurs I/O transitoires peuvent déclencher des Access Denied au moment du commit des fichiers téléchargés.
Conclusion
0x80070005 sur Windows Server 2022 est presque toujours le résultat d’un conflit de droits ou d’un composant Windows Update corrompu. Enchaînez : réinitialisation complète (dossiers/services), contrôle des GPO/WSUS, réparation SFC/DISM, vérification des journaux et de l’heure. Préparez un plan B avec l’installation manuelle SSU puis LCU afin de rétablir rapidement la conformité. Sur serveur Lenovo, ajoutez la mise à jour du firmware et des pilotes pour fiabiliser durablement le cycle de patching.
Annexe : commandes de référence
Objectif | Commande | Commentaire |
---|---|---|
Afficher les groupes | whoami /groups | Vérifie Administrateurs/Opérateurs de sauvegarde |
Tester élévation | net session | « Accès refusé » = session non admin |
Réparer image | DISM /Online /Cleanup-Image /RestoreHealth | Répare le magasin de composants |
Scanner fichiers | sfc /scannow | Remplace les fichiers corrompus |
Proxy WinHTTP | netsh winhttp show proxy | Diagnostique les proxys système |
Heure système | w32tm /query /status | Doit être proche de la source NTP |
Détection WU | UsoClient StartScan | Déclenche un scan immédiat |
Rappels critiques
- Ne laissez pas le serveur avec Defender désactivé : réactivez toujours après test.
- Conservez les dossiers
SoftwareDistribution.old
etcatroot2.old
quelques jours pour audit, puis supprimez‑les. - Documentez les GPO modifiées (avant/après) et toute exception proxy/pare‑feu ajoutée.