Levei várias horas para corrigir o problema porque o armazenamento de componentes local foi corrompido e os computadores estão acessando um servidor WSUS local em vez do servidor público de atualização da Microsoft (e porque eu uso o Dism muito raramente). Para referência e para ajudar outras pessoas com o mesmo problema, escreverei uma descrição do problema e fornecerei uma solução.
Desde a atualização para o Windows 10 Pro versão 1511 (Build 10586), tenho um problema com um arquivo opencl.dll corrompido em vários locais.
Eu tentei sfc.exe /scannow
, mas não conseguiu resolver o problema. As mensagens de erro são, entre outras:
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
Ok, então o problema está claro agora. Infelizmente, o SFC não consegue resolver a corrupção porque o armazenamento de componentes local também foi corrompido. Infelizmente, perdi as mensagens de erro que indicavam a corrupção do armazenamento de componentes.
Então eu tentei Dism /Online /Cleanup-Image /RestoreHealth
sem sucesso. Ele falha com o erro 0x800f081f , indicando outro problema com os arquivos de origem.
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]
Observando as mensagens de erro, fica claro que o Windows está configurado para usar nosso servidor WSUS local e, portanto, o Dism não consegue recuperar o arquivo válido dos repositórios. Embora eu tenha certeza de que poderia de alguma forma configurar o WSUS para fornecer os arquivos necessários, não sei como e preciso de uma solução rápida. (Se alguém souber como configurar o WSUS adequadamente, forneça informações).
Limitar o acesso ao armazenamento local adicionando o parâmetro /LimitAccess
seria inútil, pois o armazenamento de componentes local também está corrompido, conforme mencionado anteriormente.
Eu experimentei esse problema em duas máquinas. Uma atualização do Windows 10 não corrigiu o problema.
Para corrigir esse problema, você precisa ter o ISO da compilação exata que instalou.
mkdir C:\WIM
Dism /Mount-Wim /WimFile:D:\sources\install.wim /index:1 /MountDir:C:\WIM /ReadOnly
Dism /Online /Cleanup-Image /RestoreHealth /Source:C:\WIM\Windows /LimitAccess
Dism /Unmount-Wim /MountDir:C:\WIM /Discard rmdir C:\WIM
Isso deve resolver o problema.
Editar
Conforme apontado nos comentários, pode haver uma abordagem mais direta. O TL;DR é que não funcionou para mim, daí minha abordagem mais detalhada. Mas estou interessado se você teve algum problema com a abordagem direta. Por favor comente.
De vários fóruns na Internet, reuni o seguinte procedimento de reparo:
MediaCreationTool.exe
parac:\temp\windows.iso
c:\temp\windows.iso
para a pastac:\temp\windows
Converter
install.esd
parainstall.wim
Verifique o índice e a versão do Windows no índice do
.wim
arquivo-
é usado para o próximo comando Dism no parâmetro/Source:wim:path_to_wim:[index]
Restaure os componentes do Windows de integridade da imagem do Windows baixada e convertida (wim):
Reparar arquivos corrompidos:
Ele irá reparar arquivos corrompidos - mensagem de sucesso:
Windows Resource Protection found corrupt files and successfully repaired them.
Verifique os arquivos do sistema novamente para garantir o reparo bem-sucedido:
Mensagem de sucesso após a digitalização:
Windows Resource Protection did not find any integrity violations.
Um ESD não é um WIM "criptografado", é um WIM que foi altamente compactado/recodificado de maneira muito diferente (com uma estrutura mais complexa).
Um WIM é apenas compactado "rápido" por unidades inquebráveis de 4KB ou 16KB, usando uma compactação rápida de Huffmann. Um ESD usa compactação baseada em LZ mais avançada sem limitações de tamanho de bloco. Essa compactação não permite que a imagem seja aberta no modo leitura-gravação, pois a compactação é global (cada arquivo no arquivo não é mais compactado separadamente, vários arquivos lógicos podem compartilhar o armazenamento real de segmentos, para atingir uma compactação mais alta nível, principalmente quando há muitos arquivos pequenos com partes de cabeçalho comuns, como coleções de ícones ou partes de seus dados de assinatura digital, avisos de direitos autorais, cabeçalhos HTML, scripts incorporados e assim por diante).
Um SWM é um WIM de várias partes que foi dividido em vários arquivos com tamanhos menores com um tamanho máximo (aproximado), mas ainda é gravável e pode ser armazenado em vários DVDs.
Os provedores CBS permitem vários formatos de arquivamento que podem ser suportados pelo DISM, incluindo WIM, CAB, ZIP, VHD, VHDX, ISOs multisessão... com o Windows 8, apenas o formato WIM era suportado, mas as imagens eram maiores)
O formato ESD foi ajustado para permitir que a distribuição multilíngue completa do Windows 10 caiba em um único DVD com menos de 3 GB...
Você pode transformar um ESD em WIM, mas o resultado será um arquivo muito maior. A conversão inversa também é possível (para que você possa ler e gravar no WIM expandido) para empacotá-lo novamente em um novo ESD. Descompactar um ESD para WIM é relativamente rápido, mas compactar um WIM para ESD requer muitos recursos da CPU e é muito mais longo (é por isso que você não pode ler e gravar diretamente em um ESD, mas pode fazer isso facilmente em um WIM com modestos Utilização do CPU).
Quando você "monta" um ESD com DISM, a primeira coisa que ele fará é expandir o ESD em um armazenamento temporário e agir nele como se fosse um WIM, para que você possa atualizar os arquivos neste armazenamento local. Desmontá-lo exigirá duas etapas: recriar um WIM (bastante rápido) e, em seguida, empacotá-lo novamente em um ESD (muito lento).
Resolvi o problema com opengl.dll da seguinte forma:
Monte a imagem do Windows 10.
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\
sfc /scannow
Boa sorte!
Passei alguns dias percorrendo esses caminhos e finalmente encontrei uma solução para minha situação. Estou executando o Windows 10 versão 1511 Build 10586.545. Aqui está a minha progressão:
A partir daqui, o Windows Update começou a funcionar novamente.
Então, em resumo, se você está enfrentando esses erros e nada parece funcionar, tente desabilitar os drivers NVIDIA GeForce e tente algumas dessas etapas (ou copie manualmente em uma versão limpa da DLL).
Por não ter uma cópia local e, por um motivo separado, incapaz de baixar o arquivo ISO (o ISO não era do tipo Windows 10 que instalei) Existe uma solução de hotfix aqui que usei que envolve o download de um arquivo especializado chamado "SFCFix ":
Observe que a execução do arquivo SFCFix.exe sem o hotfix ZIP será um processo longo e lento que alcança muito pouco, você precisa executá-lo com o método de arrastar/soltar arquivo ZIP e o resultado é quase instantâneo.
Você deve ser capaz de utilizar uma imagem esd, de acordo com o artigo da technet DISM. Uma imagem ESD (Electronic Software Delivery) é simplesmente uma versão criptografada de um WIM e também utiliza um algoritmo de compactação muito melhor do que o formato WIM (geralmente cerca de 1,5x melhor compactação).
Se tudo o que você tem é um ESD, mas prefere usar um WIM, você pode converter um ESD em WIM com o comando DISM export. Você também pode converter um WIM em ESD especificando /compress:recovery no comando de exportação ou captura. A conversão de um para o outro requer muitos recursos e, por isso, é recomendável utilizar o script ESD para WIM que foi escrito anos atrás e está disponível no fórum MSFN. Utilizando o script, apenas ~50% dos recursos do sistema são dedicados à exportação, em comparação com os 90%+ que geralmente são utilizados para a exportação.
Acabei de ir para outra máquina Windows 10 Pro x64 e copiei o arquivo opencl.dll (do mesmo diretório). Em seguida, tomei posse do opencl.dll ruim, renomeei-o para opencl.old e copiei para o novo. Reinicie novamente no modo de segurança e execute sfc /scannow e ele voltará bem. No meu caso, este foi o ÚNICO arquivo ruim listado em cbs.log ... Posso ver onde pode ser melhor ter o sfc funcionando se você tiver muitos arquivos corrompidos e não quiser corrigir cada um individualmente. Mas se o seu problema for apenas uma dll, uma cópia simples parece funcionar.
Parece que a imagem de instalação (
install.esd
) da mídia de instalação da atualização do criador é incompatível com o método DISM descrito aqui. Você receberá um erro0x800f081f
, independentemente do tipo de comando digitado. Também não ajuda a extrair o corretoinstall.wim
do arquivo ESD. Por fim, até tentei montar o arquivo WIM sem sucesso.Veja também as discussões em https://www.sysnative.com/forums/windows-10-a/22564-dism-error-0x800f081f.html#post179723
Atualização: o erro persistente não tem nada a ver com o comando dism ou com os arquivos wim. É devido a um pacote chamado Microsoft-Windows-TestRoot-and-FlightSigning-Package para o qual nenhuma fonte de trabalho está disponível. Os arquivos estão em C:\Windows\Servicing\Packages e devem ser removidos de lá. Além disso, existem duas referências no registro que devem ser excluídas. Consulte o encadeamento sysnative vinculado para obter detalhes.