Wie kann man eine beschädigte opencl.dll in Windows 10 reparieren, wenn SFC und DISM ausfallen?

33

Ich habe mehrere Stunden gebraucht, um das Problem zu beheben, da der lokale Komponentenspeicher beschädigt war und die Computer auf einen lokalen WSUS-Server statt auf den öffentlichen Aktualisierungsserver von Microsoft zugreifen (und weil ich Dism sehr selten verwende). Als Referenz und um anderen mit dem gleichen Problem zu helfen, werde ich eine Problembeschreibung aufschreiben und eine Lösung anbieten.

Seit dem Upgrade auf Windows 10 Pro Version 1511 (Build 10586) ist an mehreren Stellen ein Problem mit einer beschädigten Datei opencl.dll aufgetreten .

Ich habe es versucht sfc.exe /scannow, aber das Problem konnte nicht behoben werden. Die Fehlermeldungen sind unter anderem:

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

Okay, das Problem ist jetzt klar. Leider kann SFC die Beschädigung nicht beheben, da der lokale Komponentenspeicher ebenfalls beschädigt wurde. Leider habe ich die Fehlermeldungen verloren, die auf die Beschädigung des Komponentenspeichers hinweisen.

Also habe ich erfolglos versucht Dism /Online /Cleanup-Image /RestoreHealth. Der Fehler 0x800f081f weist auf ein anderes Problem mit den Quelldateien hin.

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]

Anhand der Fehlermeldungen wird deutlich, dass Windows für die Verwendung unseres lokalen WSUS-Servers konfiguriert ist und Dism daher die gültige Datei nicht aus den Repositorys abrufen kann. Obwohl ich sicher bin, dass ich WSUS so konfigurieren kann, dass die erforderlichen Dateien bereitgestellt werden, weiß ich nicht, wie und benötige eine schnelle Lösung. (Wenn jemand weiß, wie WSUS entsprechend konfiguriert wird, geben Sie bitte Informationen an.)

Das Einschränken des Zugriffs auf den lokalen Speicher durch Hinzufügen des Parameters /LimitAccessist sinnlos, da der lokale Komponentenspeicher ebenfalls beschädigt ist, wie bereits erwähnt.

Ich habe dieses Problem auf zwei Computern festgestellt. Eine Aktualisierung von Windows 10 hat das Problem nicht behoben.

Daniel
quelle
fwiw hier gibt es einen langen thread answers.microsoft.com/en-us/windows/forum/… über probleme mit dieser dll.
Rory

Antworten:

42

Um dieses Problem zu beheben, benötigen Sie die ISO des exakten Builds, den Sie installiert haben.

  1. Hängen Sie das ISO-Image ein.
  2. Erstellen Sie ein temporäres Verzeichnis, um die Windows-Abbilddatei (WIM) bereitzustellen.
    mkdir C:\WIM
  3. Hängen Sie die WIM-Datei ein.
    Dism /Mount-Wim /WimFile:D:\sources\install.wim /index:1 /MountDir:C:\WIM /ReadOnly
  4. Führen Sie Dism mit den folgenden Parametern aus.
    Dism /Online /Cleanup-Image /RestoreHealth /Source:C:\WIM\Windows /LimitAccess
  5. Wenn Sie fertig sind, hängen Sie das Image aus und löschen Sie den Ordner
    Dism /Unmount-Wim /MountDir:C:\WIM /Discard rmdir C:\WIM
  6. Es ist zwingend erforderlich, den Computer neu zu starten, da sonst SFC und DISM weiterhin Fehler anzeigen.

Das sollte das Problem beheben.

Bearbeiten
Wie in den Kommentaren erwähnt, könnte es einen direkteren Ansatz geben. Die TL; DR ist, dass es bei mir nicht funktioniert hat, daher meine detailliertere Herangehensweise. Es interessiert mich aber, ob Sie Probleme mit der direkten Ansprache hatten. Bitte kommentieren.

Daniel
quelle
2
Sie können auf die WIM zeigen , ohne dass die WIM montieren: superuser.com/a/870956/174557
magicandre1981
3
@ magicandre1981 danke für deinen kommentar. Ich habe darüber gelesen und es erfolglos versucht. Es ist immer mit einem Fehler fehlgeschlagen, das war 0x800f081f Ich erinnere mich richtig. Es war überraschend zu sehen, dass ich /source:wimin der offiziellen Dokumentation für die Dism-Befehlszeilenoptionen nichts in Bezug auf den Parameter finden konnte .
Daniel
Ich habe es hier im Inhalt gelesen, um Funktionen zu aktivieren: blogs.technet.com/b/joscon/archive/2013/03/29/…
magicandre1981
2
Dies hat auch anderen Benutzern geholfen: borncity.com/blog/2015/12/09/… seltsam, dass das Mounten funktioniert, aber das direkte Übergeben des WIM nicht.
magicandre1981
4
Nachdem Sie das Windows 10-Image mit dem Media Creation Tool heruntergeladen haben, finden Sie hier: microsoft.com/en-ca/software-download/windows10 Das resultierende Image enthielt eine install.esd, die in ein WIM konvertiert werden musste, um bereitgestellt zu werden von Dism. Ich habe dazu NTLite verwendet. Danach funktionierten Daniels Anweisungen einwandfrei. Beachten Sie, dass der Parameter / index im dritten Schritt wahrscheinlich die Version von Windows, Pro oder Home widerspiegeln sollte, die Sie wiederherstellen (mit anderen Worten, verwenden Sie / index: 1 für Pro und / index: 2 für Home)
Eli B.
10

Aus verschiedenen Foren im Internet habe ich folgende Reparaturverfahren zusammengestellt:

  1. Laden Sie MediaCreationTool von http://go.microsoft.com/fwlink/?LinkId=691209 herunter
  2. Laden Sie Windows 10 Pro ISO mit MediaCreationTool.exeto herunterc:\temp\windows.iso
  3. Verwenden Sie 7-zip, um die Datei c:\temp\windows.isoin einen Ordner zu extrahierenc:\temp\windows
  4. Konvertieren install.esdnachinstall.wim

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

  5. Index prüfen und Windows-Version im .wimDateiindex
    -wird für den nächsten Befehl Dism im Parameter verwendet/Source:wim:path_to_wim:[index]

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

  6. Stellen Sie die Komponenten von Integritätsfenstern aus dem heruntergeladenen und konvertierten Windows-Image (wim) wieder her:

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

  7. Reparieren Sie beschädigte Dateien:

    sfc /scannow

    Beschädigte Dateien werden repariert - Erfolgsmeldung: Windows Resource Protection found corrupt files and successfully repaired them.

  8. Starten Sie Windows neu
  9. Überprüfen Sie die Systemdateien erneut, um eine erfolgreiche Reparatur sicherzustellen:

    sfc /scannow

    Erfolgsmeldung nach dem Scan: Windows Resource Protection did not find any integrity violations.

kapitanrum
quelle
1
Dank dessen konnte ich meine Windows 10-Installation endlich reparieren, die ich gerade erst sauber installiert habe. Scheint vermasselt zu werden und sfc schlägt bald nach einer sauberen Installation fehl! Wie auch immer, wir werden sehen, wie lange es dieses Mal fest bleibt! Erraten Microsoft hat es immer noch nicht in neuestem Fest gewinnt 10 Updates da scheint Problem für 1511 Build bekannt sein news.softpedia.com/news/... ps hat nicht Schritt 4 obwohl zu tun , da install.wim war schon da , als ich Windows ISO extrahiert.
Daveangel
Danke für die Antwort. Die Systemdateiprüfung ist nach der Installation der Grafik-Verzeichnisse beschädigt. Aber jetzt reicht es aus, das System nur mit SFC / SCANNOW zu reparieren - es scheint, dass jetzt die richtige Version von opencl.dll im Ordner winsxs verfügbar ist. PS: Es ist wahr, Schritt 4 wird möglicherweise nicht ausgeführt, wenn Sie eine bootfähige ISO-Datei herunterladen. Das Tool zur Medienerstellung lädt jedoch nur die ESD-Datei herunter (Version für das Upgrade von Windows 10). Das Media Creation Tool ist die beste Wahl für das automatische Herunterladen korrekter Installationsmedien :-)
kapitanrum
Schritt 4 (Extrahieren der WIM-Datei) erledigte dies für mich. Ausgezeichnete Anleitung. Vielen Dank.
Ravi Wallau
1
Schritt 6 schlägt für mich fehl mit "die Quelldateien können nicht gefunden werden", Fehler 0x800f091f
simpleuser
Ich habe nach dem Fehler 0x800f091f gegoogelt und möglicherweise liegt ein Problem mit der Installation von .NET Framework 3.5 vor. Wenn Sie nur Version 4+ haben, installieren Sie auch Version 3.5. Probieren Sie das MS-Installationshandbuch aus: msdn.microsoft.com/en-us/library/hh506443(v=vs.110).aspx
kapitanrum
4

Eine ESD ist kein "verschlüsseltes" WIM, es ist ein WIM, das sehr unterschiedlich stark gepackt / neu codiert wurde (mit einer komplexeren Struktur).

Ein WIM wird nur durch unzerbrechliche Einheiten von 4 KB oder 16 KB mit einer schnellen Huffmann-Komprimierung "schnell" komprimiert. Eine ESD verwendet eine erweiterte LZ-basierte Komprimierung ohne Blockgrößenbeschränkungen. Diese Komprimierung ermöglicht nicht, dass das Bild im Lese- / Schreibmodus geöffnet wird, da die Komprimierung global ist (jede Datei im Archiv wird nicht mehr separat komprimiert, mehrere logische Dateien können den tatsächlichen Speicher von Segmenten gemeinsam nutzen, um eine höhere Komprimierung zu erreichen Ebene, insbesondere wenn es viele kleine Dateien mit gemeinsamen Überschriften gibt (z. B. Sammlungen von Symbolen oder Teile ihrer digitalen Signaturdaten, Copyright-Vermerke, HTML-Überschriften, eingebettete Skripte usw.).

Ein SWM ist ein mehrteiliges WIM, das in mehrere Dateien mit kleineren Größen und einer (groben) Maximalgröße aufgeteilt wurde, aber dennoch beschreibbar ist und auf mehreren DVDs gespeichert werden kann.

CBS-Anbieter ermöglichen verschiedene Archivierungsformate, die von DISM unterstützt werden können, einschließlich WIM, CAB, ZIP, VHD, VHDX und Multisession-ISOs. Unter Windows 8 wurde nur das WIM-Format unterstützt, die Bilder waren jedoch größer.

Das ESD-Format wurde so optimiert, dass die vollständige mehrsprachige Distribution von Windows 10 auf eine einzelne DVD mit weniger als 3 GB passt ...

Sie können eine ESD in WIM umwandeln, das Ergebnis ist jedoch eine viel größere Datei. Die inverse Konvertierung ist auch möglich (so dass Sie im erweiterten WIM lesen und schreiben können), um es erneut in eine neue ESD zu packen. Das Dekomprimieren einer ESD in WIM ist relativ schnell, aber das Komprimieren einer WIM in ESD erfordert viel CPU-Ressourcen und ist viel länger (aus diesem Grund können Sie nicht direkt in eine ESD lesen und schreiben, aber Sie können dies in einer WIM mit bescheidener Geschwindigkeit recht einfach tun CPU auslastung).

Wenn Sie eine ESD mit DISM "mounten", müssen Sie zunächst die ESD in einen temporären Speicher erweitern und darauf reagieren, als wäre es ein WIM, damit Sie Dateien in diesem lokalen Speicher aktualisieren können. Das Aufheben der Bereitstellung erfordert zwei Schritte: Neuerstellen eines WIM (ziemlich schnell) und erneutes Packen in eine ESD (sehr langsam).

verdy_p
quelle
2

Ich habe das Problem mit opengl.dll folgendermaßen gelöst:

  1. Hängen Sie das Windows 10-Abbild ein.

  2. Dism / Online / Cleanup-Image / RestoreHealth / Quelle: esd: F: \ sources \ install.esd \ 1 \ Windows \ WinSxS \

  3. sfc / scannow

Viel Glück!

Vitaly Stelmakov
quelle
6
ESD ISO wird nicht wiederhergestellt Windows Image. Sie dürfen NUR WIM ISO verwenden, das Sie von microsoft.com/en-us/software-download/techbench
23W
2

Ich habe ein paar Tage damit verbracht, diese Wege zu beschreiten und schließlich eine Lösung für meine Situation gefunden. Ich verwende Windows 10 Version 1511 Build 10586.545. Hier ist mein Fortschritt:

  1. Dies begann für mich mit einem Windows Update-Fehler (Fehler 0x800705b4).
  2. Ich habe dann diesen Fehler verfolgt, indem ich Windows Update-Problembehandlungen, WUResets, Deaktivieren von Antivirus usw. ausgeführt habe. Dieser Link ist ein guter Artikel, der Optionen für dieses Problem enthält (obwohl sie mir nicht geholfen haben).
  3. Ich ging dann den DISM- und SFC-Pfad entlang. Dieser ServerFault-Beitrag war bei diesem Versuch sehr hilfreich. Leider hat keine dieser Optionen geholfen. Mir wurde immer wieder mitgeteilt, dass ich eine beschädigte opencl.dll-Datei habe, und es funktionierte nicht, alle Arten von DISM / RestoreHealth-Variationen auszuführen. Ich erhielt immer wieder 0x800f081f (Quelldateien konnten nicht gefunden werden)
  4. Als nächstes habe ich versucht, opencl.dll manuell von einem sauberen ISO in C: \ Windows \ SysWOW64 zu kopieren. Dies hat nie funktioniert, auch nicht, nachdem ich mit dem Besitzwechsel usw. rumgespielt hatte. Schließlich habe ich den NVIDIA GeForce-GPU-Treiber im Geräte-Manager deaktiviert (ein Intel-Treiber hat die Anzeige weiterhin aktiviert) und konnte die saubere opencl.dll in C: \ Windows \ kopieren. SysWOW64.

Ab hier funktioniert Windows Update wieder.

Wenn Sie also mit diesen Fehlern zu kämpfen haben und nichts zu funktionieren scheint, deaktivieren Sie die NVIDIA GeForce-Treiber und versuchen Sie dann einige dieser Schritte (oder kopieren Sie sie manuell in einer sauberen Version der DLL).

Messing
quelle
1

Da ich keine lokale Kopie besitze und aus einem anderen Grund die ISO-Datei nicht herunterladen kann (die ISO war nicht vom Windows 10-Typ, den ich installiert habe), wurde hier eine Hotfix-Lösung verwendet, bei der eine Spezialdatei mit dem Namen "SFCFix" heruntergeladen wurde ":

SFCFix ist ein brillantes kleines Dienstprogramm, mit dem Sie dieses Problem beheben können, indem Sie die beschädigte DLL-Datei reparieren / ersetzen.

Nachdem die ausführbare Datei für SFCFix heruntergeladen wurde, verschieben Sie sie auf Ihren Desktop.

Eine ZIP-Datei, die alles enthält, was SFCFix zum Reparieren / Ersetzen Ihrer beschädigten opencl.dll-Datei benötigt. Sie werden von der Website aufgefordert, sich dort zu registrieren, um Zugriff auf die ZIP-Datei zu erhalten. Dies ist absolut kostenlos.

Sobald sfcfix.zip heruntergeladen wurde, verschieben Sie es auf Ihren Desktop. Schließen Sie alle offenen Programme. Ziehen Sie die ZIP-Datei auf die ausführbare Datei für das SFCFix-Programm und lassen Sie sie dann los.

SFCFix wird gestartet und wendet das Update für die beschädigte DLL-Datei an. Lass es seine Magie wirken.

Sobald SFCFix fertig ist, erstellt es eine Datei mit dem Namen SFCFix.txtauf Ihrem Desktop. Öffnen Sie diese Datei und wenn SFCFix Ihre beschädigte opencl.dll-Datei reparieren / ersetzen konnte,

Bitte beachten Sie, dass das Ausführen der SFCFix.exe-Datei ohne den Hotfix ZIP ein langer, langsamer Prozess ist, der nur sehr wenig bewirkt. Sie müssen ihn mit der Drag / Drop-Methode für ZIP-Dateien ausführen, und das Ergebnis ist fast sofort.

Martin
quelle
0

Sie sollten in der Lage sein, ein ESD-Image gemäß dem DISM-Technet-Artikel zu verwenden. Ein ESD-Image (Electronic Software Delivery) ist einfach eine verschlüsselte Version eines WIM und verwendet zufällig einen weitaus besseren Komprimierungsalgorithmus als das WIM-Format (im Allgemeinen eine um das 1,5-fache bessere Komprimierung).

Wenn nur eine ESD vorhanden ist, Sie aber lieber eine WIM verwenden möchten, können Sie eine ESD mit dem Befehl DISM export in WIM konvertieren. Sie können eine WIM-Datei auch in eine ESD-Datei konvertieren, indem Sie im Export- oder Erfassungsbefehl / compress: recovery angeben. Das Konvertieren von einem in ein anderes ist ressourcenintensiv. Aus diesem Grund wird empfohlen, das ESD-zu-WIM-Skript zu verwenden, das vor Jahren geschrieben wurde und im MSFN-Forum verfügbar ist. Unter Verwendung des Skripts werden nur ~ 50% der Systemressourcen für den Export verwendet, verglichen mit den 90% +, die im Allgemeinen für den Export verwendet werden.

JW0914
quelle
0

Ich bin gerade zu einem anderen Windows 10 Pro x64-Computer gegangen und habe die Datei opencl.dll (aus demselben Verzeichnis) kopiert. Dann habe ich die schlechte opencl.dll übernommen, in opencl.old umbenannt und in die neue kopiert. Starten Sie den Computer wieder im abgesicherten Modus und führen Sie sfc / scannow aus. In meinem Fall war dies die EINZIGE schlechte Datei in cbs.log. Ich kann sehen, wo es besser ist, sfc arbeiten zu lassen, wenn Sie viele beschädigte Dateien haben und nicht jede für sich patchen möchten. Aber wenn Ihr Problem nur die eine DLL ist, dann scheint eine einfache Kopie zu funktionieren.

Chris
quelle
0

Es scheint, dass das Installationsimage ( install.esd) vom Creator's Update-Installationsmedium nicht mit der hier beschriebenen DISM-Methode kompatibel ist. Sie erhalten eine Fehlermeldung, 0x800f081fegal welche Art von Befehl Sie eingeben. Es hilft auch nicht, das richtige install.wimaus der ESD-Datei zu extrahieren . Schließlich habe ich sogar versucht, die WIM-Datei ohne Erfolg zu mounten.

Siehe auch Diskussionen unter https://www.sysnative.com/forums/windows-10-a/22564-dism-error-0x800f081f.html#post179723

Update: Der anhaltende Fehler hat nichts mit dem Befehl dism oder den WIM-Dateien zu tun. Dies liegt an einem Paket mit dem Namen Microsoft-Windows-TestRoot-and-FlightSigning-Package, für das keine funktionierenden Quellen verfügbar sind. Die Dateien befinden sich in C: \ Windows \ Servicing \ Packages und müssen von dort entfernt werden. Außerdem gibt es zwei Verweise in der Registrierung, die gelöscht werden müssen. Weitere Informationen finden Sie im verknüpften systematischen Thread.

Gerd Röthig
quelle