Come riparare opencl.dll corrotto in Windows 10, se SFC e DISM non riescono?


33

Mi ci sono volute diverse ore per risolvere il problema perché l'archivio componenti locale era corrotto e i computer accedono a un server WSUS locale anziché al server di aggiornamento pubblico di Microsoft (e perché utilizzo Dism molto raramente). Per riferimento e per aiutare altre persone con lo stesso problema, scriverò una descrizione del problema e fornirò una soluzione.

Dall'aggiornamento a Windows 10 Pro versione 1511 (build 10586) ho un problema con un file opencl.dll archiviato danneggiato in diverse posizioni.

Ho provato sfc.exe /scannow, ma non è stato possibile risolvere il problema. I messaggi di errore sono, tra gli altri:

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

Bene, quindi il problema è chiaro ora. Sfortunatamente, SFC non è in grado di risolvere il danneggiamento perché anche l'archivio componenti locale è stato danneggiato. Sfortunatamente, ho perso i messaggi di errore che indicano i danneggiamenti dell'archivio componenti.

Quindi ho provato Dism /Online /Cleanup-Image /RestoreHealthinutilmente. Non riesce con errore 0x800f081f , che indica un altro problema con i file di origine.

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]

Guardando i messaggi di errore, diventa chiaro che Windows è impostato per utilizzare il nostro server WSUS locale e quindi Dism non è in grado di recuperare il file valido dai repository. Mentre sono sicuro di poter in qualche modo configurare WSUS per fornire i file necessari, non so come e ho bisogno di una soluzione rapida. (Se qualcuno sa come configurare WSUS di conseguenza, si prega di fornire informazioni).

Limitare l'accesso all'archiviazione locale aggiungendo il parametro /LimitAccesssarebbe inutile poiché anche l'archivio componenti locale è danneggiato, come menzionato in precedenza.

Ho riscontrato questo problema su due macchine. Un aggiornamento di Windows 10 non ha risolto il problema.


prima c'è un lungo thread qui answer.microsoft.com/en-us/windows/forum/… sui problemi con questa dll.
Rory,

Risposte:


42

Per risolvere questo problema, devi avere l'ISO della build esatta che hai installato.

  1. Montare l'immagine ISO.
  2. Creare una directory temporanea per montare il file di immagine di Windows (WIM).
    mkdir C:\WIM
  3. Montare il file WIM.
    Dism /Mount-Wim /WimFile:D:\sources\install.wim /index:1 /MountDir:C:\WIM /ReadOnly
  4. Esegui Dism con i seguenti parametri.
    Dism /Online /Cleanup-Image /RestoreHealth /Source:C:\WIM\Windows /LimitAccess
  5. Al termine, smontare l'immagine ed eliminare la cartella
    Dism /Unmount-Wim /MountDir:C:\WIM /Discard rmdir C:\WIM
  6. È obbligatorio riavviare il computer, altrimenti SFC e DISM mostreranno ancora errori.

Ciò dovrebbe risolvere il problema.

Modifica
Come sottolineato nei commenti, potrebbe esserci un approccio più diretto. Il TL; DR è che non ha funzionato per me, quindi il mio approccio più dettagliato. Ma sono interessato se hai avuto problemi con l'approccio diretto. Per favore, commenta.


2
puoi indicare il WIM senza bisogno di montare il WIM: superuser.com/a/870956/174557
magicandre1981

3
@ magicandre1981 grazie per il tuo commento. L'ho letto e l'ho provato inutilmente. Ha sempre fallito con un errore, ovvero 0x800f081f, ricordo bene. È stato sorprendente vedere che non sono riuscito a trovare nulla per quanto riguarda il /source:wimparametro nella documentazione ufficiale per le opzioni della riga di comando di Dism .
Daniel,

L'ho letto qui nel contenuto per abilitare le funzionalità: blogs.technet.com/b/joscon/archive/2013/03/29/…
magicandre1981

2
questo ha aiutato anche altri utenti: borncity.com/blog/2015/12/09/… strano che il montaggio funzioni , ma non passa direttamente il WIM.
magicandre1981,

4
Dopo aver scaricato l'immagine di Windows 10 utilizzando lo strumento di creazione multimediale, qui: microsoft.com/en-ca/software-download/windows10 l'img risultante conteneva un file install.esd che doveva essere convertito in un WIM per poter essere montato di Dism. Ho usato NTLite per farlo. Successivamente, le istruzioni di Daniel hanno funzionato bene. Nota solo che il parametro / index nel terzo passaggio dovrebbe probabilmente riflettere la versione di Windows, Pro o Home, che stai ripristinando (in altre parole, usa / index: 1 per Pro e / index: 2 per Home)
Eli B.

10

Da vari forum su Internet, ho assemblato la seguente procedura di riparazione:

  1. Scarica MediaCreationTool da http://go.microsoft.com/fwlink/?LinkId=691209
  2. Scarica Windows 10 Pro ISO con MediaCreationTool.exeac:\temp\windows.iso
  3. Utilizzare 7-zip per estrarre il file c:\temp\windows.isonella cartellac:\temp\windows
  4. Converti install.esdininstall.wim

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

  5. Controlla l'indice e la versione di .wimWindows
    -nell'indice del file viene utilizzata per il prossimo comando Dism nel parametro/Source:wim:path_to_wim:[index]

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

  6. Ripristina i componenti di Windows di integrità dall'immagine di Windows scaricata e convertita (wim):

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

  7. Ripara file danneggiati:

    sfc /scannow

    Riparerà i file corrotti - messaggio di successo: Windows Resource Protection found corrupt files and successfully repaired them.

  8. Riavvia Windows
  9. Controlla di nuovo i file di sistema per essere sicuro che la riparazione abbia esito positivo:

    sfc /scannow

    Messaggio di successo dopo la scansione: Windows Resource Protection did not find any integrity violations.


1
Grazie a questo finalmente risolto il problema con la mia installazione di Windows 10, che non ho fatto molto tempo fa. Sembra essere incasinato e sfc fallisce subito dopo aver fatto anche un'installazione pulita! In ogni caso vedrà quanto tempo rimarrà fisso questa volta! Immagino che Microsoft non l'abbia ancora risolto nell'ultimo aggiornamento di Win 10 poiché sembra che si sia verificato un problema noto per 1511 build news.softpedia.com/news/… ps non è stato necessario eseguire il passaggio 4, poiché install.wim era già lì quando ho estratto l'ISO di Windows.
daveangel,

Grazie per la risposta. Il controllo file di sistema verrà danneggiato dopo l'installazione di dirver grafici. Ma ora è sufficiente riparare il sistema solo con l'esecuzione SFC / SCANNOW - Sembra che ora sia disponibile la versione giusta di opencl.dll nella cartella winsxs. PS: È vero, il passaggio 4 potrebbe essere disabilitato se si scarica ISO di avvio, ma lo strumento di creazione di supporti scarica solo il file ESD (versione progettata per l'aggiornamento di Windows 10). Media Creation Tool è la scelta migliore per il download automatico dei supporti di installazione corretti :-)
kapitanrum

Il passaggio 4 (estrazione del file WIM) l'ha fatto per me. Guida eccellente. Grazie.
Ravi Wallau,

1
il passaggio 6 non riesce per me con "impossibile trovare i file di origine", errore 0x800f091f
semplice

Ho cercato su Google l'errore 0x800f091f e il problema potrebbe essere con l'installazione di .NET Framework 3.5. Se hai solo la versione 4+, prova anche a installare la versione 3.5. Prova guida all'installazione MS: msdn.microsoft.com/en-us/library/hh506443(v=vs.110).aspx
kapitanrum

4

Un ESD non è un WIM "crittografato", è un WIM che è stato fortemente impacchettato / ricodificato in modo molto diverso (con una struttura più complessa).

Un WIM è semplicemente "veloce" compresso da unità infrangibili di 4KB o 16KB, usando una compressione Huffmann veloce. Un ESD utilizza una compressione basata su LZ più avanzata senza limiti di dimensione del blocco. Questa compressione non consente all'immagine di essere aperta in modalità lettura-scrittura poiché la compressione è globale (ogni file nell'archivio non è più compresso separatamente, più file logici possono condividere l'archiviazione effettiva dei segmenti, per raggiungere una compressione più elevata livello, in particolare quando ci sono molti piccoli file con parti di intestazioni comuni, come raccolte di icone o parti dei loro dati di firma digitale, avvisi di copyright, intestazioni HTML, script incorporati e così via).

Un SWM è un WIM multiparte che è stato suddiviso in più file con dimensioni inferiori con una dimensione massima (approssimativa), ma è ancora scrivibile e può essere archiviato su più DVD.

I provider CBS consentono diversi formati di archiviazione che possono essere supportati da DISM, inclusi WIM, CAB, ZIP, VHD, VHDX, ISO multisessione ... Ma Windows viene fornito con due provider integrati per i formati WIM ed ESD (ESD è una novità di Windows 10, con Windows 8, era supportato solo il formato WIM, ma le immagini erano più grandi)

Il formato ESD è stato ottimizzato per consentire la completa distribuzione multilingue di Windows 10 per adattarsi a un singolo DVD con meno di 3 GB ...

È possibile trasformare un ESD in WIM, ma il risultato sarà un file molto più grande. È anche possibile la conversione inversa (in modo che sia possibile leggere e scrivere nel WIM espanso) per impacchettarla nuovamente in un nuovo ESD. La decompressione di un ESD in WIM è relativamente veloce, ma la compressione di un WIM in ESD richiede molte risorse della CPU ed è molto più lunga (ecco perché non puoi leggere-scrivere direttamente in un ESD ma puoi farlo abbastanza facilmente in un WIM con modesto Uso della CPU).

Quando si "monta" un ESD con DISM, la prima cosa da fare è espandere l'ESD in un archivio temporaneo e agire su di esso come se fosse un WIM, in modo da poter aggiornare i file in questo archivio locale. Lo smontaggio richiederà due passaggi: ricreare un WIM (abbastanza velocemente), quindi impacchettarlo nuovamente in un ESD (molto lento).


2

Ho risolto il problema con opengl.dll come segue:

  1. Montare l'immagine di 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.0.10586.0_none_3dae054b56911c22

  3. sfc / scannow

In bocca al lupo!


6
L'ISD ESD non viene ripristinata Immagine di Windows. È necessario utilizzare SOLO WIM ISO, che è possibile scaricare da microsoft.com/en-us/software-download/techbench
23W

2

Ho trascorso alcuni giorni seguendo questi percorsi e alla fine ho trovato una soluzione per la mia situazione. Sto eseguendo Windows 10 versione 1511 Build 10586.545. Ecco la mia progressione:

  1. Questo è iniziato per me con un errore di Windows Update (errore 0x800705b4).
  2. Ho quindi inseguito questo errore facendo risoluzione dei problemi di Windows Update, WUReset, disabilitando antivirus, ecc. Questo link è un buon articolo che offre opzioni per quel problema (anche se non mi hanno aiutato)
  3. Ho quindi seguito il percorso DISM e SFC. Questo post ServerFault è stato molto utile in quel tentativo. Sfortunatamente nessuna di queste opzioni ha aiutato. Continuavo a sentirmi dire che ho un file opencl.dll corrotto e l'esecuzione di tutti i tipi di varianti di DISM / RestoreHealth non funzionava. Continuavo a ricevere 0x800f081f (Impossibile trovare i file di origine)
  4. Successivamente ho provato a copiare manualmente opencl.dll da un ISO pulito in C: \ Windows \ SysWOW64. Questo non ha mai funzionato, anche dopo aver fatto confusione con l'assunzione della proprietà, ecc. Alla fine ho disabilitato il driver GPU NVIDIA GeForce in Gestione dispositivi (Lasciando ancora un driver Intel che abilitava la visualizzazione), e sono stato in grado di copiare l'opencl.dll pulito in C: \ Windows \ SysWOW64.

Da qui, Windows Update ha ripreso a funzionare.

Quindi, in sintesi, se stai lottando con questi errori e nulla sembra funzionare, prova a disabilitare i driver NVIDIA GeForce e quindi provare alcuni di questi passaggi (o copiando manualmente in una versione pulita della DLL).


1

A causa della mancanza di una copia locale e per un motivo separato impossibile scaricare il file ISO (l'ISO non era del tipo Windows 10 che ho installato) Esiste una soluzione di aggiornamento rapido che ho usato che comporta il download di un file specializzato chiamato "SFCFix ":

SFCFix è una piccola utility brillante che è in grado di risolvere questo problema riparando / sostituendo il file dll corrotto.

Una volta scaricato il file eseguibile per SFCFix, spostarlo sul desktop.

Un file ZIP contenente tutto ciò di cui SFCFix ha bisogno per riparare / sostituire il file opencl.dll corrotto. Il sito web ti chiederà di registrarti per ottenere l'accesso al file ZIP, dovresti farlo poiché è completamente gratuito.

Una volta scaricato sfcfix.zip, spostalo sul desktop. Chiudi tutti i programmi aperti. Trascina il file ZIP sul file eseguibile per il programma SFCFix e quindi rilascialo.

SFCFix verrà avviato e inizierà ad applicare la correzione per il file dll corrotto. Lascia che funzioni la sua magia.

Una volta terminato, SFCFix creerà un file denominato SFCFix.txtsul desktop. Apri questo file e, se SFCFix è riuscito a riparare / sostituire il tuo file opencl.dll corrotto,

Si noti che l'esecuzione del file SFCFix.exe senza l'aggiornamento rapido ZIP sarà un processo lungo e lento che raggiunge pochissimo, è necessario eseguirlo con il metodo di trascinamento / rilascio del file ZIP e il risultato è quasi istantaneo.


0

Dovresti essere in grado di utilizzare un'immagine esd, secondo l'articolo della tecnica DISM. Un'immagine ESD (Electronic Software Delivery) è semplicemente una versione crittografata di un WIM e utilizza anche un algoritmo di compressione molto migliore rispetto al formato WIM (generalmente una compressione circa 1,5 volte migliore).

Se tutto ciò che si possiede è un ESD, ma si preferisce utilizzare un WIM, è possibile convertire un ESD in WIM con il comando di esportazione DISM. È inoltre possibile convertire un WIM in ESD specificando / comprimere: ripristino nel comando di esportazione o acquisizione. La conversione l'una nell'altra richiede molte risorse e, per questo motivo, si consiglia di utilizzare lo script ESD in WIM che è stato scritto anni fa ed è disponibile sul forum MSFN. Utilizzando lo script, solo il 50% circa delle risorse di sistema è dedicato all'esportazione rispetto al 90% + che viene generalmente utilizzato per l'esportazione.


0

Sono appena andato su un'altra macchina x64 di Windows 10 Pro e ho copiato il file opencl.dll (dalla stessa directory). Quindi sono diventato proprietario del file opencl.dll danneggiato, l'ho rinominato in opencl.old e l'ho copiato in quello nuovo. Riavvia in modalità provvisoria ed esegui sfc / scannow e torna bene. Nel mio caso, questo era l'UNICO file danneggiato elencato in cbs.log ... Posso vedere dove potrebbe essere meglio avere sfc funzionante se hai molti file corrotti e non vuoi patirli singolarmente. Ma se il tuo problema è solo la dll, allora una semplice copia sembra funzionare.


0

Sembra che l'immagine di installazione ( install.esd) dal supporto di installazione di Creator's Update non sia compatibile con il metodo DISM qui descritto. Verrà visualizzato un errore, 0x800f081findipendentemente dal tipo di comando digitato. Inoltre, non aiuta a estrarre il install.wimfile ESD corretto . Alla fine, ho anche provato a montare il file WIM senza alcun risultato.

Vedi anche discussioni su https://www.sysnative.com/forums/windows-10-a/22564-dism-error-0x800f081f.html#post179723

Aggiornamento: l'errore persistente non ha nulla a che fare con il comando dism o i file wim. È dovuto a un pacchetto denominato Microsoft-Windows-TestRoot-and-FlightSigning-Package per il quale non sono disponibili origini funzionanti. I file si trovano in C: \ Windows \ Manutenzione \ Pacchetti e devono essere spostati da lì. Inoltre, ci sono due riferimenti nel registro che devono essere eliminati. Vedere il thread sysnative collegato per i dettagli.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.