如果 SFC 和 DISM 失败,如何修复 Windows 10 中损坏的 opencl.dll?

Dan*_*iel 34 dism windows-10

我花了几个小时来解决这个问题,因为本地组件存储已损坏,并且计算机正在访问本地 WSUS 服务器而不是 Microsoft 的公共更新服务器(并且因为我很少使用 Dism)。为了参考和帮助其他有同样问题的人,我会写下问题描述并提供解决方案。

自从升级到 Windows 10 专业版 1511(内部版本10586)以来,我在多个位置遇到了损坏的opencl.dll问题。

我试过了sfc.exe /scannow,但未能解决问题。错误消息包括:

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
Run Code Online (Sandbox Code Playgroud)

好的,现在问题很清楚了。不幸的是,SFC无法解决损坏问题,因为本地组件存储也已损坏。不幸的是,我丢失了指示组件存储损坏的错误消息。

所以我尝试Dism /Online /Cleanup-Image /RestoreHealth了无果。它失败并出现错误0x800f081f,表明源文件存在另一个问题。

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]
Run Code Online (Sandbox Code Playgroud)

查看错误消息,很明显 Windows 设置为使用我们的本地 WSUS 服务器,因此 Dism 无法从存储库中检索有效文件。虽然我确信我可以以某种方式配置 WSUS 以提供必要的文件,但我不知道如何并且我需要快速修复。(如果有人知道如何相应地配置 WSUS,请提供信息)。

/LimitAccess如前所述,通过添加参数来限制对本地存储的访问将毫无用处,因为本地组件存储也已损坏。

我在两台机器上遇到过这个问题。一个更新的Windows 10的未解决的问题。

Dan*_*iel 43

要解决此问题,您需要拥有已安装的确切版本的 ISO。

  1. 挂载 ISO 映像。
  2. 创建一个临时目录以装载 Windows 映像文件 (WIM)。
    mkdir C:\WIM
  3. 挂载 WIM 文件。
    Dism /Mount-Wim /WimFile:D:\sources\install.wim /index:1 /MountDir:C:\WIM /ReadOnly
  4. 使用以下参数运行 Dism。
    Dism /Online /Cleanup-Image /RestoreHealth /Source:C:\WIM\Windows /LimitAccess
  5. 完成后,卸载图像并删除文件夹
    Dism /Unmount-Wim /MountDir:C:\WIM /Discard rmdir C:\WIM
  6. 必须重新启动计算机,否则 SFC 和 DISM 仍会显示错误。

那应该可以解决问题。

编辑
正如评论中指出的那样,可能有更直接的方法。TL; DR 是,它对我不起作用,因此我的方法更详细。但是,如果您对直接方法有任何问题,我很感兴趣。请给出意见。

  • 使用媒体创建工具下载 Windows 10 映像后,在此处:https://www.microsoft.com/en-ca/software-download/windows10 生成的 img 中有一个 install.esd,必须将其转换为WIM 以便由 Dism 安装。我使用 NTLite 来做到这一点。在那之后,丹尼尔的指示工作正常。请注意,第三步中的 /index 参数可能应该反映您正在恢复的 Windows、Pro 或 Home 的版本(换句话说,使用 /index:1 表示 Pro 和 /index:2 表示 Home) (4认同)
  • @magicandre1981 感谢您的评论。我读到了那件事,但我尝试了无济于事。它总是因错误而失败,我记得是 0x800f081f。令人惊讶的是,我在 [Dism 命令行选项](https://technet.microsoft.com/en-us/library/hh825099) 的官方文档中找不到有关 `/source:wim` 参数的任何内容.aspx)。 (3认同)
  • 您可以指向 WIM 而无需安装 WIM:http://superuser.com/a/870956/174557 (2认同)
  • 这对其他用户也有帮助:http://www.borncity.com/blog/2015/12/09/windows-10-dism-reparatur-bemngelt-quelle-fehler-0x800f081f/comment-page-1/#comment- 27331 奇怪,挂载有效,但直接通过 WIM 不行。 (2认同)

kap*_*rum 10

从互联网上的各种论坛,我组装了以下修复程序:

  1. http://go.microsoft.com/fwlink/?LinkId=691209下载 MediaCreationTool
  2. 将 Windows 10 专业版 ISO 下载MediaCreationTool.exec:\temp\windows.iso
  3. 使用 7-zipc:\temp\windows.iso将文件解压到文件夹c:\temp\windows
  4. 转换install.esdinstall.wim

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

  5. 检查.wim文件
    -索引中的索引和 Windows 版本用于参数中的下一个 Dism 命令/Source:wim:path_to_wim:[index]

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

  6. 从下载和转换的 windows 映像 (wim) 中恢复健康 windows 组件:

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

  7. 修复损坏的文件:

    sfc /scannow

    它将修复损坏的文件 - 成功消息: Windows Resource Protection found corrupt files and successfully repaired them.

  8. 重新启动 Windows
  9. 再次检查系统文件以确保成功修复:

    sfc /scannow

    扫描成功后提示: Windows Resource Protection did not find any integrity violations.