¿Cómo reparar corruptos opencl.dll en Windows 10, si SFC y DISM fallan?

33

Me tomó varias horas solucionar el problema porque el almacén de componentes local estaba dañado y las computadoras están accediendo a un servidor WSUS local en lugar del servidor de actualización público de Microsoft (y porque uso Dism muy raramente). Como referencia y para ayudar a otras personas con el mismo problema, escribiré una descripción del problema y proporcionaré una solución.

Desde la actualización a Windows 10 Pro versión 1511 (compilación 10586) tengo un problema con un archivo opencl.dll dañado en varias ubicaciones.

Lo intenté sfc.exe /scannow, pero no pudo solucionar el problema. Los mensajes de error son, entre otros:

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

Bien, entonces el problema está claro ahora. Desafortunadamente, SFC no puede resolver la corrupción porque el almacén de componentes local también se corrompió. Desafortunadamente, perdí los mensajes de error que indican que el componente almacena daños.

Así que intenté Dism /Online /Cleanup-Image /RestoreHealthen vano. Falla con el error 0x800f081f , lo que indica otro problema con los archivos de origen.

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]

Al observar los mensajes de error, queda claro que Windows está configurado para usar nuestro servidor WSUS local y, por lo tanto, Dism no puede recuperar el archivo válido de los repositorios. Si bien estoy seguro de que de alguna manera podría configurar WSUS para proporcionar los archivos necesarios, no sé cómo y necesito una solución rápida. (Si alguien sabe cómo configurar WSUS en consecuencia, proporcione información).

Limitar el acceso al almacenamiento local agregando el parámetro /LimitAccesssería inútil ya que el almacén de componentes local también está dañado, como se mencionó anteriormente.

Experimenté este problema en dos máquinas. Una actualización de Windows 10 no solucionó el problema.

Daniel
fuente
fwiw hay un hilo largo aquí answers.microsoft.com/en-us/windows/forum/… sobre problemas con este dll.
Rory

Respuestas:

42

Para solucionar este problema, debe tener el ISO de la compilación exacta que ha instalado.

  1. Montar la imagen ISO.
  2. Cree un directorio temporal para montar el archivo de imagen de Windows (WIM).
    mkdir C:\WIM
  3. Monta el archivo WIM.
    Dism /Mount-Wim /WimFile:D:\sources\install.wim /index:1 /MountDir:C:\WIM /ReadOnly
  4. Ejecute Dism con los siguientes parámetros.
    Dism /Online /Cleanup-Image /RestoreHealth /Source:C:\WIM\Windows /LimitAccess
  5. Cuando termine, desmonte la imagen y elimine la carpeta
    Dism /Unmount-Wim /MountDir:C:\WIM /Discard rmdir C:\WIM
  6. Es obligatorio reiniciar su computadora, o SFC y DISM aún mostrarán errores.

Eso debería solucionar el problema.

Editar
Como se señaló en los comentarios, puede haber un enfoque más directo. El TL; DR es que no funcionó para mí, de ahí mi enfoque más detallado. Pero estoy interesado si tuvo algún problema con el enfoque directo. Por favor comenta.

Daniel
fuente
2
se puede apuntar a la WIM sin necesidad de montar el WIM: superuser.com/a/870956/174557
magicandre1981
3
@ magicandre1981 gracias por tu comentario. Leí sobre eso y lo intenté en vano. Siempre fallaba con un error, eso era 0x800f081f Recuerdo bien. Fue sorprendente ver que no pude encontrar nada con respecto al /source:wimparámetro en la documentación oficial de las Opciones de línea de comandos de Dism .
Daniel
Lo leí aquí en el contenido para habilitar las funciones: blogs.technet.com/b/joscon/archive/2013/03/29/…
magicandre1981
2
Esto también ayudó a otros usuarios: borncity.com/blog/2015/12/09/... extraño que el montaje funciona, pero directamente no pasa el WIM.
magicandre1981
44
Después de descargar la imagen de Windows 10 con la herramienta de creación de medios, aquí: microsoft.com/en-ca/software-download/windows10 el img resultante tenía un install.esd que tenía que convertirse a un WIM para poder montarlo por Dism. Usé NTLite para hacerlo. Después de eso, las instrucciones de Daniel funcionaron bien. Solo tenga en cuenta que el parámetro / index en el tercer paso probablemente debería reflejar la versión de Windows, Pro o Home, que está restaurando (en otras palabras, use / index: 1 para Pro e / index: 2 para Home)
Eli B.
10

Desde varios foros en Internet, he reunido el siguiente procedimiento de reparación:

  1. Descargue MediaCreationTool desde http://go.microsoft.com/fwlink/?LinkId=691209
  2. Descargue Windows 10 Pro ISO con MediaCreationTool.exeparac:\temp\windows.iso
  3. Use 7-zip para extraer el archivo c:\temp\windows.isoa la carpetac:\temp\windows
  4. Convertir install.esdainstall.wim

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

  5. El índice de verificación y la versión de Windows en .wimel
    -índice del archivo se utilizan para el siguiente comando Dism en el parámetro/Source:wim:path_to_wim:[index]

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

  6. Restaure los componentes de Windows de salud desde la imagen de Windows descargada y convertida (wim):

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

  7. Reparar archivos corruptos:

    sfc /scannow

    Reparará archivos corruptos - mensaje de éxito: Windows Resource Protection found corrupt files and successfully repaired them.

  8. Reiniciar Windows
  9. Verifique nuevamente los archivos del sistema para asegurarse de una reparación exitosa:

    sfc /scannow

    Mensaje de éxito después del escaneo: Windows Resource Protection did not find any integrity violations.

kapitanrum
fuente
1
Gracias, esto finalmente solucionó mi instalación de Windows 10, que hice hace una instalación limpia no hace mucho tiempo. Parece estar jodido y sfc falla poco después de hacer una instalación limpia. ¡De todos modos verá cuánto tiempo permanece fijo esta vez! Supongo que Microsoft aún no lo ha solucionado en la última actualización de win 10 ya que parece ser un problema conocido para 1511 build news.softpedia.com/news/… ps no tenía que hacer el paso 4, ya que install.wim ya estaba allí cuando yo extrajo las ventanas ISO.
daveangel
Gracias por responder. El verificador de archivos del sistema se dañará después de instalar controladores gráficos. Pero ahora es suficiente para reparar el sistema solo con ejecutar SFC / SCANNOW: parece que ahora está disponible la versión correcta de opencl.dll en la carpeta winsxs. PD: Es cierto, el paso 4 puede omitirse si descarga ISO de arranque, pero la herramienta de creación de medios descarga solo el archivo ESD (versión diseñada para actualizar Windows 10). La herramienta de creación de medios es la mejor opción para la descarga automática de los medios de instalación correctos :-)
kapitanrum
El paso 4 (extraer el archivo WIM) lo hizo por mí. Excelente guia. Gracias.
Ravi Wallau
1
el paso 6 falla para mí con "no se pueden encontrar los archivos de origen", error 0x800f091f
simpleuser
Busqué en Google el error 0x800f091f y el problema puede estar con la instalación de .NET Framework 3.5. Si solo tiene la versión 4+, intente instalar la versión 3.5 también. Pruebe la guía de instalación de MS: msdn.microsoft.com/en-us/library/hh506443(v=vs.110).aspx
kapitanrum el
4

Un ESD no es un WIM "cifrado", es un WIM que se ha empaquetado / vuelto a codificar de manera muy diferente (con una estructura más compleja).

Un WIM es simplemente "rápido" comprimido por unidades irrompibles de 4KB o 16KB, usando una compresión rápida de Huffmann. Un ESD utiliza una compresión más avanzada basada en LZ sin limitaciones de tamaño de bloque. Esta compresión no permite que la imagen se abra en modo lectura-escritura, ya que la compresión es global (cada archivo en el archivo ya no se comprime por separado, varios archivos lógicos pueden compartir el almacenamiento real de segmentos, para alcanzar una compresión mucho mayor nivel, especialmente cuando hay muchos archivos pequeños con partes de encabezados comunes, como colecciones de iconos o partes de sus datos de firma digital, avisos de derechos de autor, encabezados HTML, scripts incrustados, etc.

Un SWM es un WIM multiparte que se ha dividido en varios archivos con tamaños más pequeños con un tamaño máximo (aproximado), pero aún es grabable y puede almacenarse en varios DVD.

Los proveedores de CBS permiten varios formatos de archivo que pueden ser compatibles con DISM, incluidos WIM, CAB, ZIP, VHD, VHDX, ISO de múltiples sesiones ... Pero Windows viene con dos proveedores incorporados para los formatos WIM y ESD (ESD es nuevo en Windows 10, con Windows 8, solo se admitía el formato WIM, pero las imágenes eran más grandes)

El formato ESD se ha ajustado para permitir que la distribución multilingüe completa de Windows 10 se ajuste a un solo DVD con menos de 3 GB ...

Puede transformar un ESD a WIM, pero el resultado será un archivo mucho más grande. La conversión inversa también es posible (para que pueda leer y escribir en el WIM expandido) para empacar nuevamente en un nuevo ESD. Descomprimir un ESD a WIM es relativamente rápido, pero comprimir un WIM a ESD requiere muchos recursos de CPU y es mucho más largo (es por eso que no puede leer y escribir directamente en un ESD, pero puede hacerlo con bastante facilidad en un WIM con modestia). Uso de CPU).

Cuando "monta" un ESD con DISM, lo primero que hará es expandir el ESD en un almacenamiento temporal y actuar sobre él como si fuera un WIM, para que pueda actualizar los archivos en este almacenamiento local. Desmontarlo requerirá dos pasos: recrear un WIM (bastante rápido) y luego empacarlo nuevamente en un ESD (muy lento).

verdy_p
fuente
2

Resolví el problema con opengl.dll de la siguiente manera:

  1. Monta la imagen de 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

¡Buena suerte!

Vitaly Stelmakov
fuente
66
ESD ISO no se restaura la imagen de Windows. Debe usar SOLO WIM ISO, que puede descargar de microsoft.com/en-us/software-download/techbench
23W
2

Pasé unos días recorriendo estos caminos y finalmente encontré una solución para mi situación. Estoy ejecutando Windows 10 versión 1511 Build 10586.545. Aquí está mi progresión:

  1. Esto comenzó para mí con un error de actualización de Windows (error 0x800705b4).
  2. Luego perseguí este error haciendo solucionadores de problemas de Windows Update, WUResets, deshabilitando antivirus, etc. Este enlace es un buen artículo que ofrece opciones para ese problema (aunque no me ayudaron)
  3. Luego fui por el camino DISM y SFC. Esta publicación de ServerFault fue muy útil en ese intento. Lamentablemente, ninguna de estas opciones ayudó. Continuamente me dijeron que tenía un archivo opencl.dll corrupto y que ejecutar todo tipo de variaciones de DISM / RestoreHealth no funcionó. Seguí recibiendo 0x800f081f (no se pudieron encontrar los archivos fuente)
  4. Luego intenté copiar manualmente opencl.dll desde un ISO limpio en C: \ Windows \ SysWOW64. Esto nunca funcionó, incluso después de jugar con la propiedad, etc. Finalmente deshabilité el controlador de GPU NVIDIA GeForce en el Administrador de dispositivos (dejando un controlador Intel que todavía permite la visualización), y pude copiar el opencl.dll limpio en C: \ Windows \ SysWOW64.

A partir de aquí, Windows Update comenzó a funcionar nuevamente.

En resumen, si tiene problemas con estos errores y parece que nada funciona, intente deshabilitar los controladores NVIDIA GeForce y luego intente algunos de estos pasos (o copie manualmente en una versión limpia de la DLL).

Latón
fuente
1

Debido a que no tengo una copia local y por una razón separada no puedo descargar el archivo ISO (el ISO no era del tipo de Windows 10 que he instalado) Aquí hay una solución de revisión que utilicé y que implica descargar un archivo especializado llamado "SFCFix ":

SFCFix es una pequeña utilidad brillante que es capaz de solucionar este problema reparando / reemplazando el archivo dll corrupto.

Una vez que se haya descargado el archivo ejecutable para SFCFix, muévalo a su escritorio.

Un archivo ZIP que contiene todo lo que SFCFix necesita para reparar / reemplazar su archivo corrupto opencl.dll. El sitio web le pedirá que se registre para obtener acceso al archivo ZIP, debe hacerlo ya que es completamente gratuito.

Una vez que se haya descargado sfcfix.zip, muévalo a su escritorio. Cierra todos los programas abiertos. Arrastre el archivo ZIP al archivo ejecutable para el programa SFCFix y luego suéltelo.

SFCFix se iniciará y comenzará a aplicar la corrección para el archivo dll corrupto. Deja que haga su magia.

Una vez que SFCFix haya terminado, creará un archivo con nombre SFCFix.txten su Escritorio. Abra este archivo y, si SFCFix logró reparar / reemplazar su archivo corrupto opencl.dll,

Tenga en cuenta que ejecutar el archivo SFCFix.exe sin el hotfix ZIP será un proceso largo y lento que logra muy poco, debe ejecutarlo con el método de arrastrar / soltar el archivo ZIP, y el resultado es casi instantáneo.

Martín
fuente
0

Debería poder utilizar una imagen esd, según el artículo de DISM technet. Una imagen ESD (Electronic Software Delivery) es simplemente una versión encriptada de un WIM, y también utiliza un algoritmo de compresión mucho mejor que el formato WIM (generalmente una compresión 1,5 veces mejor).

Si todo lo que tiene es un ESD, pero prefiere usar un WIM, puede convertir un ESD a WIM con el comando de exportación DISM. También puede convertir un WIM a ESD especificando / comprimir: recuperación dentro del comando de exportación o captura. La conversión de uno a otro requiere muchos recursos, y debido a esto, se recomienda utilizar la secuencia de comandos ESD a WIM que se escribió hace años y está disponible en el foro de MSFN. Utilizando el script, solo ~ 50% de los recursos del sistema se dedican a la exportación frente al 90% + que generalmente se utiliza para la exportación.

JW0914
fuente
0

Simplemente fui a otra máquina con Windows 10 Pro x64 y copié el archivo opencl.dll (del mismo directorio). Luego tomé posesión del mal opencl.dll, lo renombré a opencl.old y copié el nuevo. Reinicie nuevamente en modo seguro y ejecute sfc / scannow y todo volverá bien. En mi caso, este fue el ÚNICO archivo incorrecto enumerado en cbs.log ... Puedo ver dónde podría ser mejor tener sfc funcionando si tiene muchos archivos corruptos y no desea parchear cada uno individualmente. Pero si su problema es solo el dll, entonces parece que una copia simple funciona.

Chris
fuente
0

Parece que la imagen de instalación ( install.esd) del medio de instalación de Creator's Update es incompatible con el método DISM descrito aquí. Obtendrá un error 0x800f081fsin importar qué tipo de comando escriba. Tampoco ayuda extraer el correcto install.wimdel archivo ESD. Finalmente, incluso intenté montar el archivo WIM en vano también.

Vea también las discusiones en https://www.sysnative.com/forums/windows-10-a/22564-dism-error-0x800f081f.html#post179723

Actualización: el error persistente no tiene nada que ver con el comando dism o los archivos wim. Se debe a un paquete llamado Microsoft-Windows-TestRoot-and-FlightSigning-Package para el cual no hay fuentes de trabajo disponibles. Los archivos están en C: \ Windows \ Servicing \ Packages y deben ser retirados de allí. Además, hay dos referencias en el registro que deben eliminarse. Vea el hilo sysnative vinculado para más detalles.

Gerd Röthig
fuente