Windows Server 2022 : corriger l’échec des mises à jour après remplacement de curl.exe (DISM, SFC, WinSxS, erreur 0x800f081f)

Après avoir remplacé curl.exe sur Windows Server 2022, les mises à jour cumulatives peuvent échouer et SFC signaler un hash mismatch. Ce guide explique la cause (WinSxS/CSI) et détaille une procédure DISM/SFC en ligne et hors ligne, y compris la gestion de l’erreur 0x800f081f.

Sommaire

Problème : échec des mises à jour après installation manuelle de curl.exe sur Windows Server 2022

Vue d’ensemble

  • Après avoir remplacé manuellement curl.exe par une version téléchargée depuis curl.se, les mises à jour de sécurité mensuelles refusent de s’installer.
  • sfc /scannow remonte une incohérence de hachage : le binaire en %SystemRoot%\System32/SysWOW64 ne correspond pas à la référence dans le magasin de composants (WinSxS).
  • Les journaux CBS/CSI mettent en cause le composant « Curl, version 10.0.20348.1668 » comme corrompu.

Pourquoi cela bloque Windows Update

Windows Server s’appuie sur le magasin de composants WinSxS et la pile de maintenance (CBS/SSU) pour vérifier l’intégrité des fichiers système lors de l’installation des mises à jour cumulatives. Quand on remplace un binaire protégé (ex. curl.exe signé par Microsoft) par une version « hors bande », les hachages de fichiers contenus dans le manifeste du composant ne correspondent plus : la vérification échoue et l’orchestrateur Windows Update bloque l’installation pour éviter d’empiler des correctifs sur une base incohérente.

Symptômes typiques

  • SFC affiche « hash mismatch », « Cannot repair member file ‘curl.exe’… ».
  • DISM échoue en mode hors ligne avec 0x800f081f (Source files could not be found).
  • Dans C:\Windows\Logs\CBS\CBS.log : entrées CSI indiquant corruption du composant Curl (version 10.0.20348.1668).
  • Les mises à jour cumulatives mensuelles (LCU) et éventuellement les mises à jour de sécurité out-of-band restent en échec.

Solutions proposées et issues rencontrées

ÉtapeCommande / actionObjectifRésultat
1Supprimer le curl sur‑mesureÉliminer la version dissidenteNon expérimenté mais recommandé
2DISM /Online /Cleanup-Image /RestoreHealthRéparer le magasin de composants depuis Windows UpdateD’abord impossible faute d’accès Internet ; réussit une fois la connexion autorisée
3sfc /scannowVérifier/recoller les fichiers systèmeOK après réparation DISM
4Tentative hors ligne : DISM … /Source:E:\sources\install.wim /LimitAccessRéparer via ISO localeErreur 0x800f081f « source introuvable » – fichier WIM/ESD ou index incorrect

Résultat final

Une fois un accès Internet temporaire rétabli, DISM /RestoreHealth a téléchargé les sources nécessaires, restauré l’état attendu de curl.exe, puis SFC a confirmé l’intégrité. Les mises à jour de sécurité se sont remises à s’installer normalement.

Procédure recommandée pas à pas

Préparation et collecte d’informations

  1. Ouvrir une console administrative : Invite de commandes (Admin) ou Windows PowerShell (Admin).
  2. Identifier la build/édition pour les vérifications d’images : systeminfo | findstr /B /C:"OS Name" /C:"OS Version" winver
  3. Exporter les détails SFC pour analyse rapide : findstr /c:"[SR]" "%windir%\Logs\CBS\CBS.log" >"%userprofile%\Desktop\SFC-Details.txt"

Réparation en ligne (recommandée)

Cette approche utilise Windows Update comme source fiable et recrée la référence WinSxS du composant Curl avant de valider l’intégrité.

  1. Autoriser temporairement le serveur à contacter Windows Update (proxy/pare-feu). Si votre environnement utilise WSUS et bloque les sources de réparation, activez la stratégie : Configuration ordinateur → Modèles d’administration → Système → Spécifier les paramètres d’installation des composants facultatifs et de la réparation des composants, puis cochez « Contacter directement Windows Update … ».
  2. Lancer la réparation : DISM /Online /Cleanup-Image /RestoreHealth
  3. Valider les fichiers système : sfc /scannow
  4. Redémarrer si demandé, puis relancer les mises à jour cumulatives.

Astuce : DISM /Online /Cleanup-Image /ScanHealth dresse un diagnostic non destructif. Si vous devez gagner du temps hors période de maintenance, exécutez-le d’abord pour confirmer la corruption avant de lancer /RestoreHealth.

Réparation hors ligne avec ISO correspondante

En environnements isolés, fournissez à DISM une image d’installation strictement compatible (même édition et même base de build que le serveur). L’erreur 0x800f081f survient presque toujours quand l’index d’image ne correspond pas ou si l’édition diffère (Core vs Datacenter, Desktop Experience vs Server Core).

  1. Monter l’ISO de Windows Server 2022 (lecteur E: par exemple).
  2. Identifier l’index correct : dism /Get-WimInfo /WimFile:E:\sources\install.wim Repérez l’entrée qui correspond à votre édition (« Datacenter », « Standard ») et à votre expérience (« Server Core » ou « Desktop Experience »).
  3. Réparer depuis l’index trouvé (ex. 3) sans contacter Windows Update : DISM /Online /Cleanup-Image /RestoreHealth /Source:wim:E:\sources\install.wim:3 /LimitAccess Si l’ISO contient un install.esd, utilisez : DISM /Online /Cleanup-Image /RestoreHealth /Source:esd:E:\sources\install.esd:3 /LimitAccess
  4. Valider puis redémarrer si nécessaire : sfc /scannow

Contournement ESD → WIM : si /Source:esd: échoue, exportez l’index voulu en WIM :

dism /Export-Image /SourceImageFile:E:\sources\install.esd /SourceIndex:3 ^
  /DestinationImageFile:C:\Temp\install.wim /Compress:max /CheckIntegrity

Puis rejouez /Source:wim:C:\Temp\install.wim:3.

Contrôles d’intégrité et vérifications utiles

Hash et signature de curl.exe

Get-FileHash -Path "$env:SystemRoot\System32\curl.exe" -Algorithm SHA256
Get-FileHash -Path "$env:SystemRoot\SysWOW64\curl.exe" -Algorithm SHA256
Get-AuthenticodeSignature "$env:SystemRoot\System32\curl.exe" | Format-List

État des packages et de la pile de maintenance

DISM /Online /Get-Packages /Format:Table
Get-WindowsPackage -Online | ? {$_.PackageName -like "*ServicingStack*"} | ft -a

Collecte rapide des journaux

# CBS (Component-Based Servicing)
notepad C:\Windows\Logs\CBS\CBS.log

# DISM

notepad C:\Windows\Logs\DISM\dism.log

# Filtrer les entrées SR (SFC)

findstr /c:"[SR]" "%windir%\Logs\CBS\CBS.log" >"%userprofile%\Desktop\SFC-Details.txt"

Erreurs fréquentes et pistes de résolution

Code / messageCause probableAction corrective
0x800f081fSource files could not be foundIndex/édition de l’image install.wim/esd non compatible ou chemin erronéUtiliser /Get-WimInfo, vérifier l’index et préciser /Source:wim:<chemin>:INDEX /LimitAccess
SFC « hash mismatch »Fichier système modifié (ex. curl.exe) ne correspondant plus au manifeste WinSxSExécuter DISM /RestoreHealth puis SFC /scannow, redémarrer si demandé
DISM échoue sans InternetPolitique bloquant les sources de réparation en ligneTemporairement autoriser Windows Update ou activer la stratégie « Contacter directement Windows Update » pour la réparation

Bonnes pratiques en environnement de production

  • Fenêtre de maintenance : DISM/SFC ne redémarrent pas d’office mais peuvent solliciter CPU/disque. Planifiez en heures creuses.
  • Point de restauration/sauvegarde : snapshot VM ou sauvegarde système avant toute opération sur les binaires.
  • Éviter les remplacements directs : ne substituez pas les exécutables en System32/SysWOW64. Si vous avez besoin d’une autre version de curl, installez-la hors du chemin système (ex. C:\Tools\curl\) et invoquez-la par chemin complet.
  • Priorité du PATH : si vous devez ajouter un répertoire contenant un autre curl.exe, placez-le après %SystemRoot%\System32 dans PATH pour ne pas masquer la version Microsoft.
  • Conformité sécurité : exploitez les CU/LCU de Microsoft qui embarquent les mises à jour de curl signées. Les « Feature on Demand » ou LCU intègrent les binaires attendus par CBS.
  • Contrôle applicatif : utilisez AppLocker ou WDAC pour empêcher des modifications non autorisées des répertoires système.

Mode hors ligne : rappels essentiels

  1. Employez une image install.wim ou install.esd de la même édition et build que le serveur.
  2. Repérez l’index adéquat : dism /Get-WimInfo /WimFile:E:\sources\install.wim.
  3. Précisez /Source:wim:E:\sources\install.wim:INDEX (ou /Source:esd:…:INDEX) et conservez /LimitAccess pour rester hors ligne.
ParamètreExempleCommentaires
Chemin WIM/Source:wim:E:\sources\install.wim:3Le :3 correspond à l’index détecté via /Get-WimInfo
Chemin ESD/Source:esd:E:\sources\install.esd:3Fonctionne si DISM du système supporte ESD
Accès réseau/LimitAccessEmpêche DISM de contacter Windows Update (WSUS/Internet)

Foire aux questions

Pourquoi ne pas installer directement la dernière version de curl ?

Le binaire fourni par Microsoft est lié à un manifeste de composant WinSxS. Une version externe, même légitime, n’a pas le même hachage ni la même signature que la référence attendue ; Windows Update considère alors l’état du composant comme incohérent et interrompt l’installation des LCU.

Que se passe‑t‑il si j’ignore le problème ?

Les échecs de LCU peuvent s’accumuler, exposant le serveur aux vulnérabilités corrigées ultérieurement. De plus, d’autres composants dépendants peuvent finir par échouer lors d’opérations CBS (installations de rôles, .NET, etc.).

Comment obtenir les correctifs de sécurité de curl sans casser WinSxS ?

Installez les mises à jour cumulatives et packages Microsoft. Ils fournissent des binaires signés et cohérents avec le magasin de composants.

Puis‑je supprimer le curl sur‑mesure avant DISM ?

Oui. Supprimer/renommer la copie dissidente (curl.exe hors WinSxS) peut raccourcir la réparation. Toutefois, si WinSxS lui‑même est incohérent, SFC ne suffira pas ; DISM /RestoreHealth restera nécessaire pour rétablir le composant.

Dois‑je utiliser /StartComponentCleanup ?

DISM /Online /Cleanup-Image /StartComponentCleanup peut réduire la taille de WinSxS mais supprime des chemins de retour arrière. À réserver aux environnements où l’on accepte de ne plus désinstaller certaines mises à jour.

Informations complémentaires utiles

Redémarrage

DISM et SFC ne forcent pas de redémarrage. Si un redémarrage est requis, un message clair l’indiquera ; choisissez une fenêtre adaptée.

Vérification de hachage avant toute substitution

Avant de remplacer un binaire système, calculez son hachage (Get-FileHash) et comparez‑le à la valeur publiée par l’éditeur. Mieux : évitez toute substitution directe et laissez Windows Update gérer la mise à niveau.

Environnements de production

  • Planifier DISM/SFC en période creuse.
  • Prendre un instantané/sauvegarde.
  • Ne pas déplacer ou écraser des fichiers sous %SystemRoot%.

Prévention

Pour bénéficier des correctifs de sécurité de curl sans rompre le magasin de composants, utilisez les Cumulative Updates ou Feature on Demand packs fournis par Microsoft ; ils intègrent les versions signées de curl.

Check‑list exécutable

  • Rétablir temporairement l’accès à Windows Update ou préparer l’ISO correspondant à l’édition/build.
  • Exécuter DISM /Online /Cleanup-Image /RestoreHealth (avec /Source et /LimitAccess si hors ligne).
  • Lancer SFC /scannow et vérifier CBS.log.
  • Relancer l’installation de la LCU/la sécurité mensuelle.
  • Verrouiller les pratiques : pas de remplacement direct dans System32, contrôle du PATH, AppLocker/WDAC si nécessaire.

Synthèse de la résolution

Revenir à la version officielle de curl fournie par Microsoft, réparer le magasin de composants avec DISM, puis valider l’intégrité avec SFC résout durablement l’échec d’installation des mises à jour de sécurité sur Windows Server 2022.

Sommaire