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
.
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 avec0x800f081f
(Source files could not be found).- Dans
C:\Windows\Logs\CBS\CBS.log
: entréesCSI
indiquant corruption du composant Curl (version10.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
Étape | Commande / action | Objectif | Résultat |
---|---|---|---|
1 | Supprimer le curl sur‑mesure | Éliminer la version dissidente | Non expérimenté mais recommandé |
2 | DISM /Online /Cleanup-Image /RestoreHealth | Réparer le magasin de composants depuis Windows Update | D’abord impossible faute d’accès Internet ; réussit une fois la connexion autorisée |
3 | sfc /scannow | Vérifier/recoller les fichiers système | OK après réparation DISM |
4 | Tentative hors ligne : DISM … /Source:E:\sources\install.wim /LimitAccess | Réparer via ISO locale | Erreur 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
- Ouvrir une console administrative : Invite de commandes (Admin) ou Windows PowerShell (Admin).
- Identifier la build/édition pour les vérifications d’images :
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" winver
- 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é.
- 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 … ».
- Lancer la réparation :
DISM /Online /Cleanup-Image /RestoreHealth
- Valider les fichiers système :
sfc /scannow
- 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).
- Monter l’ISO de Windows Server 2022 (lecteur
E:
par exemple). - 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 »). - 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 uninstall.esd
, utilisez :DISM /Online /Cleanup-Image /RestoreHealth /Source:esd:E:\sources\install.esd:3 /LimitAccess
- 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 / message | Cause probable | Action corrective |
---|---|---|
0x800f081f – Source files could not be found | Index/é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 WinSxS | Exécuter DISM /RestoreHealth puis SFC /scannow , redémarrer si demandé |
DISM échoue sans Internet | Politique bloquant les sources de réparation en ligne | Temporairement 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 decurl
, 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
dansPATH
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
- Employez une image install.wim ou install.esd de la même édition et build que le serveur.
- Repérez l’index adéquat :
dism /Get-WimInfo /WimFile:E:\sources\install.wim
. - Précisez
/Source:wim:E:\sources\install.wim:INDEX
(ou/Source:esd:…:INDEX
) et conservez/LimitAccess
pour rester hors ligne.
Paramètre | Exemple | Commentaires |
---|---|---|
Chemin WIM | /Source:wim:E:\sources\install.wim:3 | Le :3 correspond à l’index détecté via /Get-WimInfo |
Chemin ESD | /Source:esd:E:\sources\install.esd:3 | Fonctionne si DISM du système supporte ESD |
Accès réseau | /LimitAccess | Empê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érifierCBS.log
. - Relancer l’installation de la LCU/la sécurité mensuelle.
- Verrouiller les pratiques : pas de remplacement direct dans
System32
, contrôle duPATH
, 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 avecDISM
, puis valider l’intégrité avecSFC
résout durablement l’échec d’installation des mises à jour de sécurité sur Windows Server 2022.