AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 741487
Accepted
Daniel
Daniel
Asked: 2015-12-09 00:44:07 +0800 CST2015-12-09 00:44:07 +0800 CST 2015-12-09 00:44:07 +0800 CST

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

  • 772

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

自从升级到 Windows 10 Pro 版本 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

好的,现在问题很清楚了。不幸的是,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]

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

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

我在两台机器上遇到了这个问题。更新Windows 10 并没有解决这个问题。

windows-10
  • 9 9 个回答
  • 87808 Views

9 个回答

  • Voted
  1. Best Answer
    Daniel
    2015-12-09T00:58:22+08:002015-12-09T00:58:22+08:00

    要解决此问题,您需要拥有已安装的确切版本的 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 是,它对我不起作用,因此我的方法更详细。但是,如果您对直接方法有任何问题,我很感兴趣。请评论。

    • 43
  2. kapitanrum
    2016-05-17T09:46:27+08:002016-05-17T09:46:27+08:00

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

    1. 从http://go.microsoft.com/fwlink/?LinkId=691209下载 MediaCreationTool
    2. 下载 Windows 10 Pro ISOMediaCreationTool.exe到c:\temp\windows.iso
    3. 使用 7-zip 将文件解压c:\temp\windows.iso到文件夹c:\temp\windows
    4. 转换install.esd为install.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.

    • 10
  3. verdy_p
    2016-06-05T00:43:37+08:002016-06-05T00:43:37+08:00

    ESD 不是“加密”的 WIM,它是高度打包/重新编码的 WIM,其结构非常不同(具有更复杂的结构)。

    WIM 只是由 4KB 或 16KB 的牢不可破的单元“快速”压缩,使用快速 Huffmann 压缩。ESD 使用更先进的基于 LZ 的压缩,没有块大小限制。这种压缩不允许图像以读写模式打开,因为压缩是全局的(存档中的每个文件不再单独压缩,多个逻辑文件可以共享段的实际存储,以达到更高的压缩率级别,特别是当有许多具有共同标题部分的小文件时,例如图标集合或其数字签名数据的一部分、版权声明、HTML 标题、嵌入脚本等)。

    SWM 是一个多部分的 WIM,它已被拆分为多个较小尺寸的文件,具有(粗略的)最大尺寸,但它仍然是可写的,并且可以存储在多张 DVD 上。

    CBS 提供程序允许 DISM 支持的多种归档格式,包括 WIM、CAB、ZIP、VHD、VHDX、多会话 ISO...但是 Windows 带有两个用于 WIM 和 ESD 格式的内置提供程序(ESD 是 Windows 10 的新功能,在 Windows 8 中,仅支持 WIM 格式,但图像更大)

    ESD 格式已经过调整,允许 Windows 10 的完整多语言分发版可以放入小于 3GB 的单张 DVD...

    您可以将 ESD 转换为 WIM,但结果将是一个更大的文件。也可以进行反向转换(以便您可以在扩展的 WIM 中进行读写)以将其再次打包到新的 ESD 中。将 ESD 解压缩为 WIM 相对较快,但将 WIM 压缩为 ESD 需要大量 CPU 资源并且时间更长(这就是为什么您不能直接读写 ESD 但您可以在 WIM 中轻松做到这一点CPU使用率)。

    当您使用 DISM“挂载”一个 ESD 时,它会做的第一件事是将 ESD 扩展为一个临时存储并像 WIM 一样对其进行操作,以便您可以更新此本地存储中的文件。卸载它需要两个步骤:重新创建 WIM(非常快),然后将其再次打包到 ESD 中(非常慢)。

    • 4
  4. Neff
    2015-12-22T13:46:35+08:002015-12-22T13:46:35+08:00

    我用opengl.dll解决了如下问题:

    1. 挂载 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. 证监会 /scannow

    祝你好运!

    • 2
  5. BRass
    2016-08-27T06:46:43+08:002016-08-27T06:46:43+08:00

    我花了几天时间沿着这些路径走下去,终于找到了适合我情况的解决方案。我正在运行 Windows 10 版本 1511 Build 10586.545。这是我的进展:

    1. 这对我来说是从 Windows 更新失败(错误 0x800705b4)开始的。
    2. 然后,我在执行 Windows 更新疑难解答、WUResets、禁用防病毒软件等时追查了这个错误。 这个链接是一篇很好的文章,提供了针对该问题的选项(尽管它们没有帮助我)
    3. 然后我走上了 DISM 和 SFC 的道路。这篇 ServerFault 帖子在那次尝试中非常有帮助。不幸的是,这些选项都没有帮助。我一直被告知我有一个损坏的 opencl.dll 文件,并且运行 DISM /RestoreHealth 的各种变体都不起作用。我一直收到 0x800f081f(找不到源文件)
    4. 接下来我尝试手动将 opencl.dll 从干净的 ISO 复制到 C:\Windows\SysWOW64。这从未奏效,即使在弄乱了所有权等之后。我终于在设备管理器中禁用了 NVIDIA GeForce GPU 驱动程序(让英特尔驱动程序仍然启用显示),并且能够将干净的 opencl.dll 复制到 C:\Windows\系统WOW64。

    从这里开始,Windows 更新再次开始工作。

    因此,总而言之,如果您遇到这些错误并且似乎没有任何效果,请尝试禁用 NVIDIA GeForce 驱动程序,然后尝试其中一些步骤(或手动复制 DLL 的干净版本)。

    • 2
  6. Martin
    2016-06-15T00:26:11+08:002016-06-15T00:26:11+08:00

    由于没有本地副本,并且由于其他原因无法下载 ISO 文件(ISO 不是我安装的 Windows 10 类型) ,我在这里使用了一个修补程序解决方案,其中涉及下载一个名为“SFCFix”的专业文件“:

    SFCFix 是一个出色的小实用程序,能够通过修复/替换损坏的 dll 文件为您解决此问题。

    下载 SCFFix 的可执行文件后,将其移动到桌面。

    一个ZIP 文件,其中包含 SFCFix修复/替换损坏的 opencl.dll 文件所需的所有内容。网站将要求您在其上注册以访问 ZIP 文件,您应该这样做,因为它是完全免费的。

    下载 sfcfix.zip 后,将其移至桌面。关闭所有打开的程序。将 ZIP 文件拖到 SCFFix 程序的可执行文件上,然后释放它。

    SCFFix 将启动并开始为损坏的 dll 文件应用修复程序。让它发挥它的魔力。

    完成 SCFFix 后,它将SFCFix.txt在您的桌面上创建一个名为的文件。打开此文件,如果 SCFFix 成功修复/替换损坏的 opencl.dll 文件,

    请注意,不使用修补程序 ZIP 运行 SCFFix.exe 文件将是一个漫长而缓慢的过程,收效甚微,您需要使用 ZIP 文件拖放方法运行它,结果几乎是即时的。

    • 1
  7. JW0914
    2016-03-16T14:29:01+08:002016-03-16T14:29:01+08:00

    根据 DISM technet 文章,您应该能够使用 esd 映像。ESD(电子软件交付)映像只是 WIM 的加密版本,并且碰巧使用了比 WIM 格式更好的压缩算法(通常大约是 1.5 倍的压缩率)。

    如果只有 ESD,但更愿意使用 WIM,则可以使用 DISM 导出命令将 ESD 转换为 WIM。您还可以通过在 export 或 capture 命令中指定 /compress:recovery 将 WIM 转换为 ESD。将一个转换为另一个是资源密集型的,因此,建议使用多年前编写的 ESD 到 WIM 脚本,该脚本可在 MSFN 论坛上找到。使用该脚本,只有约 50% 的系统资源专用于导出,而通常用于导出的 90% 以上。

    • 0
  8. Chris
    2016-08-23T08:44:04+08:002016-08-23T08:44:04+08:00

    我刚刚去了另一台 Windows 10 Pro x64 机器并复制了 opencl.dll 文件(来自同一目录)。然后我获得了坏的 opencl.dll 的所有权,将其重命名为 opencl.old,并复制到新的中。重新启动回到安全模式并运行 sfc /scannow 并恢复正常。就我而言,这是 cbs.log 中列出的唯一坏文件……如果您有许多损坏的文件并且不想单独修补每个文件,我可以看到让 sfc 工作可能会更好。但是,如果您的问题只是一个 dll,那么一个简单的副本似乎可以工作。

    • 0
  9. Gerd Röthig
    2017-04-21T09:28:23+08:002017-04-21T09:28:23+08:00

    Creator's Update 安装媒体中的安装映像 ( ) 似乎install.esd与此处描述的 DISM 方法不兼容。0x800f081f无论您键入哪种命令,都会出错。它也无助于install.wim从 ESD 文件中提取正确的内容。最后,我什至尝试挂载 WIM 文件也无济于事。

    另请参阅https://www.sysnative.com/forums/windows-10-a/22564-dism-error-0x800f081f.html#post179723上的讨论

    更新:持续错误与 dism 命令或 wim 文件无关。这是由于一个名为 Microsoft-Windows-TestRoot-and-FlightSigning-Package 的包没有可用的工作源。这些文件位于 C:\Windows\Servicing\Packages 中,必须从那里移走。此外,注册表中有两个引用必须删除。有关详细信息,请参阅链接的 sysnative 线程。

    • 0

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve