Comment réparer opencl.dll corrompu dans Windows 10, si SFC et DISM échouent?

33

Il m'a fallu plusieurs heures pour résoudre le problème car le magasin de composants local était corrompu et les ordinateurs accédaient à un serveur WSUS local au lieu du serveur de mise à jour public de Microsoft (et parce que j'utilise très rarement Dism). Pour référence et pour aider d'autres personnes avec le même problème, je vais écrire une description du problème et proposer une solution.

Depuis la mise à niveau vers Windows 10 Pro version 1511 (Build 10586), j'ai un problème avec un fichier opencl.dll corrompu classé à plusieurs endroits.

J'ai essayé sfc.exe /scannow, mais le problème n'a pas été résolu. Les messages d'erreur sont, entre autres:

2015-12-08 08:50:43, Info                  CSI    00003c3a Hashes for file member \SystemRoot\WinSxS\wow64_microsoft-windows-r..xwddmdriver-wow64-c_31bf3856ad364e35_10.0.10586.0_none_3dae054b56911c22\opencl.dll do not match actual file [l:10]"opencl.dll" :
  Found: {l:32 g2VAunZ6/2J1G3oL7kf9fjInPUA9VYeiJcl9VKgizaY=} Expected: {l:32 9rnAnuwzPjMQA7sW63oNAVhckspIngsqJXKYSUeQ5Do=}
2015-12-08 08:50:43, Info                  CSI    00003c3b [SR] Cannot repair member file [l:10]"opencl.dll" of microsoft-windows-RemoteFX-clientVM-RemoteFXWDDMDriver-WOW64-C, version 10.0.10586.0, arch Host= amd64 Guest= x86, nonSxS, pkt {l:8 b:31bf3856ad364e35} in the store, hash mismatch
2015-12-08 08:50:43, Info                  CSI    00003c3c [SR] This component was referenced by [l:125]"Microsoft-Windows-RemoteFX-VM-Setup-Package~31bf3856ad364e35~amd64~~10.0.10586.0.RemoteFX clientVM and UMTS files and regkeys"
2015-12-08 08:50:43, Info                  CSI    00003c3d Hashes for file member \??\C:\WINDOWS\SysWOW64\opencl.dll do not match actual file [l:10]"opencl.dll" :
  Found: {l:32 g2VAunZ6/2J1G3oL7kf9fjInPUA9VYeiJcl9VKgizaY=} Expected: {l:32 9rnAnuwzPjMQA7sW63oNAVhckspIngsqJXKYSUeQ5Do=}
2015-12-08 08:50:43, Info                  CSI    00003c3e Hashes for file member \SystemRoot\WinSxS\wow64_microsoft-windows-r..xwddmdriver-wow64-c_31bf3856ad364e35_10.0.10586.0_none_3dae054b56911c22\opencl.dll do not match actual file [l:10]"opencl.dll" :
  Found: {l:32 g2VAunZ6/2J1G3oL7kf9fjInPUA9VYeiJcl9VKgizaY=} Expected: {l:32 9rnAnuwzPjMQA7sW63oNAVhckspIngsqJXKYSUeQ5Do=}
2015-12-08 08:50:43, Info                  CSI    00003c3f [SR] Could not reproject corrupted file [l:23 ml:24]"\??\C:\WINDOWS\SysWOW64"\[l:10]"opencl.dll"; source file in store is also corrupted

Bon, le problème est clair maintenant. Malheureusement, SFC est incapable de résoudre la corruption car le magasin de composants locaux a également été corrompu. Malheureusement, j'ai perdu les messages d'erreur indiquant les corruptions du magasin de composants.

Alors j'ai essayé Dism /Online /Cleanup-Image /RestoreHealthen vain. Il échoue avec l'erreur 0x800f081f , indiquant un autre problème avec les fichiers source.

2015-12-08 08:57:35, Info                  CBS    Exec: Download qualification evaluation, business scenario: Manual Corruption Repair
2015-12-08 08:57:35, Info                  CBS    Exec: Clients specified using Windows Update.
2015-12-08 08:57:35, Info                  CBS    WU: Update service is not default AU service, skip. URL: https://fe2.update.microsoft.com/v6/, Name: Microsoft Update
2015-12-08 08:57:35, Info                  CBS    WU: Update service is not default AU service, skip. URL: https://fe2.ws.microsoft.com/v6/, Name: Windows Store
2015-12-08 08:57:35, Info                  CBS    WU: Update service is not default AU service, skip. URL: https://fe3.delivery.mp.microsoft.com/, Name: Windows Store (DCat Prod)
2015-12-08 08:57:35, Info                  CBS    WU: WSUS service is the default, URL: (null), Name: Windows Server Update Service
2015-12-08 08:57:35, Info                  CBS    DWLD:Search is done, set download progress to 20 percent.
2015-12-08 08:57:35, Info                  CBS    Nothing to download, unexpected
2015-12-08 08:57:35, Info                  CBS    Failed to collect payload and there is nothing to repair. [HRESULT = 0x800f081f - CBS_E_SOURCE_MISSING]
2015-12-08 08:57:35, Info                  CBS    Failed to repair store. [HRESULT = 0x800f081f - CBS_E_SOURCE_MISSING]

En regardant les messages d'erreur, il devient clair que Windows est configuré pour utiliser notre serveur WSUS local et par conséquent, Dism ne peut pas extraire le fichier valide à partir des référentiels. Bien que je sois certain de pouvoir configurer WSUS de manière à fournir les fichiers nécessaires, je ne sais pas comment et j’ai besoin d’une solution rapide. (Si quelqu'un sait comment configurer WSUS en conséquence, veuillez fournir des informations).

Limiter l'accès au stockage local en ajoutant le paramètre /LimitAccessserait inutile, car le magasin de composants locaux est également corrompu, comme indiqué précédemment.

J'ai rencontré ce problème sur deux machines. Une actualisation de Windows 10 n'a pas résolu le problème.

Daniel
la source
FWIW il y a un long fil ici answers.microsoft.com/en-us/windows/forum/... des problèmes avec cette dll.
Rory

Réponses:

42

Pour résoudre ce problème, vous devez disposer de l'ISO de la version exacte que vous avez installée.

  1. Montez l'image ISO.
  2. Créez un répertoire temporaire pour monter le fichier image Windows (WIM).
    mkdir C:\WIM
  3. Montez le fichier WIM.
    Dism /Mount-Wim /WimFile:D:\sources\install.wim /index:1 /MountDir:C:\WIM /ReadOnly
  4. Exécutez Dism avec les paramètres suivants.
    Dism /Online /Cleanup-Image /RestoreHealth /Source:C:\WIM\Windows /LimitAccess
  5. Une fois terminé, démontez l'image et supprimez le dossier
    Dism /Unmount-Wim /MountDir:C:\WIM /Discard rmdir C:\WIM
  6. Il est obligatoire de redémarrer votre ordinateur, sinon SFC et DISM afficheront toujours des erreurs.

Cela devrait résoudre le problème.

Modifier
Comme indiqué dans les commentaires, il pourrait y avoir une approche plus directe. Le TL; DR est, cela n'a pas fonctionné pour moi, d'où mon approche plus détaillée. Mais je suis intéressé si vous aviez des problèmes avec l'approche directe. Commentez s'il vous plaît.

Daniel
la source
2
vous pouvez pointer sur le WIM sans avoir besoin de le monter: superuser.com/a/870956/174557
magicandre1981
3
@ magicandre1981 merci pour votre commentaire. J'ai lu à ce sujet et je l'ai essayé en vain. Il a toujours échoué avec une erreur, c'était 0x800f081f je me souviens bien. Il était surprenant de constater que je ne trouvais rien concernant ce /source:wimparamètre dans la documentation officielle des options de ligne de commande Dism .
Daniel
Je l'ai lu ici dans le contenu pour activer les fonctionnalités: blogs.technet.com/b/joscon/archive/2013/03/29/…
magicandre1981
2
cela a également aidé d'autres utilisateurs: borncity.com/blog/2015/12/09/… étrange que le montage fonctionne, mais en passant directement le WIM pas.
magicandre1981
4
Après avoir téléchargé l'image Windows 10 à l'aide de l'outil de création multimédia, ici: microsoft.com/fr-fr/software-download/windows10, l'image résultante contenait un fichier install.esd qui devait être converti en un fichier WIM pour pouvoir être monté. par Dism. J'ai utilisé NTLite pour le faire. Après cela, les instructions de Daniel ont bien fonctionné. Notez simplement que le paramètre / index dans la troisième étape doit probablement refléter la version de Windows, Pro ou Home que vous restaurez (en d’autres termes, utilisez / index: 1 pour Pro et / index: 2 pour Home)
Eli B.
10

À partir de divers forums sur Internet, j'ai assemblé la procédure de réparation suivante:

  1. Téléchargez MediaCreationTool à l'adresse http://go.microsoft.com/fwlink/?LinkId=691209.
  2. Téléchargez Windows 10 Pro ISO avec MediaCreationTool.exepourc:\temp\windows.iso
  3. Utilisez 7-zip pour extraire le fichier c:\temp\windows.isodans un dossierc:\temp\windows
  4. Convertir install.esdeninstall.wim

    Dism /Export-Image /SourceImageFile:c:\temp\windows\sources\install.esd /SourceIndex:1 /DestinationImageFile:c:\temp\windows\sources\install.wim /compress:max

  5. Vérifier l'index et la version de Windows dans l' index de .wimfichier
    -est utilisée pour la prochaine commande Dism en paramètre/Source:wim:path_to_wim:[index]

    Dism /Get-WimInfo /wimFile:c:\temp\windows\sources\install.wim

  6. Restaurez les composants d'intégrité Windows à partir de l'image Windows téléchargée et convertie (wim):

    Dism /Online /Cleanup-Image /RestoreHealth /Source:wim:c:\temp\windows\sources\install.wim:1 /LimitAccess

  7. Réparer les fichiers corrompus:

    sfc /scannow

    Il réparera les fichiers corrompus - message de réussite: Windows Resource Protection found corrupt files and successfully repaired them.

  8. Redémarrer Windows
  9. Vérifiez à nouveau les fichiers système pour vous assurer d'une réparation réussie:

    sfc /scannow

    Message de réussite après numérisation: Windows Resource Protection did not find any integrity violations.

Kapitanrum
la source
1
Merci cela a finalement résolu mon installation de Windows 10 que je viens de faire une installation propre il n'y a pas longtemps. Semble foiré et sfc échoue peu de temps après avoir même fait une installation propre! Quoi qu'il en soit, vous verrez combien de temps il reste fixe cette fois! Devinez Microsoft n'a toujours pas fixé dans le dernier GAGNEZ 10 mise à jour depuis semble être un problème connu pour 1511 build news.softpedia.com/news/... ps n'a pas à faire l' étape 4 , bien que depuis install.wim était déjà là quand je extrait les fenêtres ISO.
daveangel
Merci pour votre réponse. Le vérificateur de fichiers système sera corrompu après l’installation des répertoires graphiques. Mais maintenant, il suffit de réparer le système uniquement avec SFC / SCANNOW - Il semble que la version actuelle d’Opencl.dll soit disponible dans le dossier winsxs. PS: C’est vrai, l’étape 4 risque d’être omise si vous téléchargez une image ISO amorçable, mais que l’outil de création de support ne télécharge que le fichier ESD (version conçue pour la mise à niveau Windows 10). L’outil de création de support est le meilleur choix pour le téléchargement automatique du support d’installation correct :-)
kapitanrum
L'étape 4 (extraction du fichier WIM) l'a fait pour moi. Excellent guide. Merci.
Ravi Wallau
1
l'étape 6 échoue pour moi avec "les fichiers source sont introuvables", erreur 0x800f091f
simpleuser
J'ai googlé pour l'erreur 0x800f091f et le problème peut être avec l'installation .NET Framework 3.5. Si vous ne possédez que la version 4+, essayez également d'installer la version 3.5. Essayez le guide d'installation de MS: msdn.microsoft.com/en-us/library/hh506443(v=vs.110).aspx
kapitanrum le
4

Un ESD n'est pas un WIM "crypté", c'est un WIM très compressé / réencodé très différemment (avec une structure plus complexe).

Un WIM est simplement compressé "rapidement" par des unités incassables de 4 ou 16 Ko, utilisant une compression Huffmann rapide. Un ESD utilise une compression LZ plus avancée sans limitations de taille de bloc. Cette compression ne permet pas d'ouvrir l'image en mode lecture-écriture car la compression est globale (chaque fichier de l'archive n'est plus compressé séparément, plusieurs fichiers logiques peuvent partager le stockage réel des segments, pour atteindre une compression plus élevée. niveau, notamment lorsqu'il existe de nombreux petits fichiers contenant des parties d'en-tête communes, telles que des collections d'icônes ou des parties de leurs données de signature numérique, des mentions de copyright, des en-têtes HTML, des scripts incorporés, etc.).

Un SWM est un fichier WIM en plusieurs parties divisé en plusieurs fichiers de tailles plus petites avec une taille maximale (approximative), mais il est toujours inscriptible et peut être stocké sur plusieurs DVD.

Les fournisseurs CBS autorisent plusieurs formats d’archivage pris en charge par DISM, notamment les fichiers WIM, CAB, ZIP, VHD, VHDX, ISO multisessions. Mais Windows est livré avec deux fournisseurs intégrés pour les formats WIM et ESD (ESD est nouveau pour Windows 10, avec Windows 8, seul le format WIM était pris en charge, mais les images étaient plus grandes)

Le format ESD a été adapté pour permettre à la distribution multilingue complète de Windows 10 de s’adapter à un seul DVD de moins de 3 Go ...

Vous pouvez transformer une ESD en WIM, mais le résultat sera un fichier beaucoup plus volumineux. La conversion inverse est également possible (afin que vous puissiez lire / écrire dans le WIM développé) pour le ré-emballer dans un nouvel ESD. Décompresser une ESD en WIM est relativement rapide, mais compresser une WIM en ESD nécessite beaucoup de ressources de traitement et est beaucoup plus long (c'est pourquoi vous ne pouvez pas lire / écrire directement dans une ESD mais vous pouvez le faire assez facilement dans un WIM avec L'utilisation du processeur).

Lorsque vous "montez" un ESD avec DISM, la première chose à faire est de développer l'ESD dans un stockage temporaire et de le gérer comme s'il s'agissait d'un WIM, afin de pouvoir mettre à jour les fichiers de ce stockage local. Son démontage nécessite deux étapes: recréer un WIM (assez rapide), puis le ranger de nouveau dans un ESD (très lent).

verdy_p
la source
2

J'ai résolu le problème avec opengl.dll comme suit:

  1. Montez l'image Windows 10.

  2. Dism / Online / Cleanup-Image / RestoreHealth / Source: esd: F: \ sources \ install.esd \ 1 \ Windows \ WinSxS \ wow64_microsoft-windows-r..xwddmdriver-wow64-c_31bf3856ad364e35_10.10.10586.010

  3. sfc / scannow

Bonne chance!

Vitaly Stelmakov
la source
6
L'image ISO ESD n'est pas restaurée Image Windows. Vous devez utiliser UNIQUEMENT le format ISO WIM, que vous pouvez télécharger à partir de microsoft.com/fr-fr/software-download/techbench
23W
2

J'ai passé quelques jours sur ces chemins et j'ai finalement trouvé une solution à ma situation. J'utilise Windows 10 version 1511 Build 10586.545. Voici ma progression:

  1. Cela a commencé pour moi avec un échec de Windows Update (erreur 0x800705b4).
  2. J'ai ensuite poursuivi cette erreur en effectuant des dépannages Windows Update, des WUResets, en désactivant l'antivirus, etc. Ce lien est un bon article donnant des options pour ce problème (bien qu'ils ne m'ont pas aidé)
  3. J'ai ensuite descendu le chemin DISM et SFC. Ce message ServerFault a été très utile dans cette tentative. Malheureusement, aucune de ces options n'a aidé. Je n'arrêtais pas de me faire dire que j'avais un fichier opencl.dll corrompu et l'exécution de toutes sortes de variantes de DISM / RestoreHealth ne fonctionnait pas. Je n'arrêtais pas de recevoir 0x800f081f (les fichiers source étaient introuvables)
  4. J'ai ensuite essayé de copier manuellement opencl.dll à partir d'une image ISO propre dans C: \ Windows \ SysWOW64. Cela n'a jamais fonctionné, même après avoir joué avec la prise de possession, etc. J'ai finalement désactivé le pilote de GPU NVIDIA GeForce dans le Gestionnaire de périphériques (en laissant un pilote Intel permettant toujours l'affichage) et j'ai pu copier le fichier opencl.dll dans C: \ Windows \. SysWOW64.

À partir de là, Windows Update a recommencé à fonctionner.

En résumé, si vous rencontrez des problèmes avec ces erreurs et que rien ne semble fonctionner, essayez de désactiver les pilotes NVIDIA GeForce, puis essayez de suivre certaines de ces étapes (ou de les copier manuellement dans une version propre de la DLL).

Laiton
la source
1

En raison de l'absence d'une copie locale et de l'impossibilité de télécharger le fichier ISO pour une raison distincte (l'ISO n'est pas du type Windows 10 que j'ai installé). Il existe une solution de correctif que j'ai utilisée qui implique le téléchargement d'un fichier spécial appelé "SFCFix ":

SFCFix est un petit utilitaire brillant capable de résoudre ce problème en réparant / remplaçant le fichier DLL endommagé.

Une fois le fichier exécutable de SFCFix téléchargé, déplacez-le sur votre bureau.

Un fichier ZIP contenant tout ce dont SFCFix a besoin pour réparer / remplacer votre fichier opencl.dll corrompu. Le site Web vous demandera de vous enregistrer pour accéder au fichier ZIP. Vous devez le faire car il est totalement gratuit.

Une fois que sfcfix.zip a été téléchargé, déplacez-le sur votre bureau. Fermez tous les programmes ouverts. Faites glisser le fichier ZIP sur le fichier exécutable du programme SFCFix, puis relâchez-le.

SFCFix se lancera et commencera à appliquer le correctif pour le fichier DLL endommagé. Laissez-le fonctionner sa magie.

Une fois que SFCFix est terminé, il crée un fichier nommé SFCFix.txtsur votre bureau. Ouvrez ce fichier et, si SFCFix a réussi à réparer / remplacer votre fichier opencl.dll corrompu,

Veuillez noter que l’exécution du fichier SFCFix.exe sans le correctif ZIP est un processus long et lent qui ne produit que très peu de résultats. Vous devez l’exécuter avec la méthode de glisser / déposer du fichier ZIP et le résultat est presque instantané.

Martin
la source
0

Vous devriez pouvoir utiliser une image esd, conformément à l'article de technet de DISM. Une image ESD (Electronic Software Delivery) est simplement une version chiffrée d'un fichier WIM et utilise également un algorithme de compression bien meilleur que le format WIM (généralement environ 1,5 fois mieux).

Si tout ce que l'on a est un ESD, mais préfère utiliser un WIM, vous pouvez convertir un ESD en WIM avec la commande d'exportation DISM. Vous pouvez également convertir un fichier WIM en fichier ESD en spécifiant / compresser: récupération dans la commande d'exportation ou de capture. La conversion de l'un en l'autre nécessite beaucoup de ressources. C'est pourquoi il est recommandé d'utiliser le script ESD vers WIM, écrit il y a de nombreuses années et disponible sur le forum MSFN. À l'aide du script, environ 50% seulement des ressources système sont dédiées à l'exportation, par rapport aux 90% et plus généralement utilisées pour l'exportation.

JW0914
la source
0

Je viens d’aller sur un autre ordinateur Windows 10 Pro x64 et de copier le fichier opencl.dll (à partir du même répertoire). Ensuite, j'ai pris possession du mauvais opencl.dll, je l'ai renommé opencl.old et je l'ai copié dans le nouveau. Redémarrez en mode sans échec et exécutez sfc / scannow et tout va bien. Dans mon cas, c’était le SEUL mauvais fichier répertorié dans cbs.log ... Je peux voir où il pourrait être préférable de faire fonctionner sfc si vous avez beaucoup de fichiers corrompus et que vous ne voulez pas les patcher individuellement. Mais si votre problème n’est que celui de la DLL, une simple copie semble fonctionner.

Chris
la source
0

Il semble que l'image d'installation ( install.esd) du support d'installation de Update du créateur est incompatible avec la méthode DISM décrite ici. Vous obtiendrez une erreur 0x800f081fquel que soit le type de commande que vous tapez. Cela n’aide pas non plus d’extraire le install.wimfichier correct du fichier ESD. Enfin, j'ai même essayé de monter le fichier WIM, mais en vain.

Voir également les discussions sur https://www.sysnative.com/forums/windows-10-a/22564-dism-error-0x800f081f.html#post179723

Mise à jour: L'erreur persistante n'a rien à voir avec la commande dism ou les fichiers wim. Cela est dû à un package nommé Microsoft-Windows-TestRoot-and-FlightSigning-Package pour lequel aucune source de travail n'est disponible. Les fichiers sont dans C: \ Windows \ Servicing \ Packages et doivent être déplacés de là. En outre, il existe deux références dans le registre qui doivent être supprimées. Voir le fil symbolique lié pour plus de détails.

Gerd Röthig
la source