web-dev-qa-db-ja.com

SFCとDISMが失敗した場合、Windows 10で破損したopencl.dllを修正する方法

ローカルコンポーネントストアが破損しており、コンピューターがMicrosoftのパブリックアップデートサーバーではなくローカルWSUSサーバーにアクセスしているため(そして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を試してみましたが無駄です。エラーx800f081fで失敗し、ソースファイルに別の問題があることを示しています。

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を追加してローカルストレージへのアクセスを制限しても意味がありません。

2台のマシンでこの問題が発生しました。 Windows 10のrefreshでは問題は修正されませんでした。

34
Daniel

この問題を修正するには、インストールしたビルドの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
Daniel

インターネット上のさまざまなフォーラムから、次の修復手順を組み立てました。

  1. MediaCreationToolを http://go.Microsoft.com/fwlink/?LinkId=691209 からダウンロードします
  2. MediaCreationTool.exeからc:\temp\windows.isoを含むWindows 10 Pro ISOをダウンロード
  3. フォルダーc:\temp\windows.isoへの抽出ファイルc:\temp\windowsに7-Zipを使用します
  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バージョンを確認する
    -indexは、パラメータ/Source:wim:path_to_wim:[index]で次のDismコマンドに使用されます

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

  6. ダウンロードおよび変換されたWindowsイメージ(wim)からヘルスウィンドウコンポーネントを復元します。

    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
kapitanrum

ESDは「暗号化された」WIMではなく、非常に異なる方法で(より複雑な構造で)高度にパック/再エンコードされたWIMです。

WIMは、高速ハフマン圧縮を使用して、4KBまたは16KBの壊れない単位によって「高速」に圧縮されます。 ESDは、ブロックサイズの制限なしに、より高度なLZベースの圧縮を使用します。この圧縮では、圧縮がグローバル(アーカイブ内の各ファイル)であるため、イメージを読み取り/書き込みモードで開くことができません。個別に圧縮されなくなり、複数の論理ファイルがセグメントの実際のストレージを共有して、特にアイコンのコレクションなどの一般的なヘッダー部分やデジタル署名データの部分を持つ多くの小さなファイルがある場合に、非常に高い圧縮レベルに到達できます、著作権表示、HTMLヘッダー、埋め込みスクリプトなど)。

SWMはマルチパートWIMであり、(大まかな)最大サイズの小さいサイズの複数のファイルに分割されていますが、書き込み可能であり、複数のDVDに保存できます。

CBSプロバイダーでは、WIM、CAB、Zip、VHD、VHDX、マルチセッションISOなど、DISMでサポートできるいくつかのアーカイブ形式を使用できます。ただし、Windowsには、WIM用の2つの組み込みプロバイダーとESD形式(ESDはWindows 10の新機能であり、Windows 8ではWIM形式のみがサポートされていましたが、画像のサイズは大きくなりました)

ESD形式は、Windows 10の完全な多言語配布が3GB未満の単一のDVDに収まるように調整されています...

ESD= WIMに変換できますが、結果ははるかに大きなファイルになります。逆の変換も可能です(そのため、展開されたWIMで読み書きできるようになります)。新しいESDへの変換。ESD WIMへの解凍は比較的高速ですが、WIMをESDに圧縮することは、多くのCPUリソースを必要とし、はるかに長くなります(そのため、 ESDに直接読み書きすることはできませんが、適度なCPU使用率のWIMでは非常に簡単に行うことができます)。

ESD DISMを使用して「マウント」する場合、最初に行うことは、ESDを一時ストレージに展開し、それをあたかもそれのように操作することです。はWIMだったので、このローカルストレージのファイルを更新できます。マウントを解除するには、WIMを再作成(かなり高速)してから、もう一度ESD(非常に低速)にパックします)。

4
verdy_p

私は数日かけてこれらの道を進み、最終的に私の状況の解決策を見つけました。私はWindows 10バージョン1511ビルド10586.545を実行しています。これが私の進行です:

  1. これは、Windows Updateの失敗(エラー0x800705b4)で始まりました。
  2. 次に、Windows Updateのトラブルシューティング、WUResets、ウイルス対策の無効化などを実行して、このエラーを追跡しました。 このリンク は、その問題のオプションを提供する優れた記事です(ただし、それらは私には役立ちませんでした)。
  3. 次に、DISMとSFCのパスを下りました。このServerFaultの投稿は、その試みに非常に役立ちました。残念ながら、これらのオプションはどれも役に立ちませんでした。 opencl.dllファイルが破損していると言われ続け、DISM/RestoreHealthのさまざまなバリエーションを実行しても機能しませんでした。私は0x800f081fを取得し続けました(ソースファイルが見つかりませんでした)
  4. 次に、opencl.dllをクリーンなISOからC:\ Windows\SysWOW64に手動でコピーしようとしました。所有権を取得するなどいじった後でも、これは機能しませんでした。デバイスマネージャーでNVIDIA GeForce GPUドライバーを無効にし(Intelドライバーをそのままにしてディスプレイを有効にしたまま)、クリーンなopencl.dllをC:\ Windows \にコピーできましたSysWOW64。

ここから、Windows Updateが再び機能し始めました。

つまり、要約すると、これらのエラーに苦労していて何も機能しないようであれば、NVIDIA GeForceドライバーを無効にしてから、これらの手順のいくつかを試してみてください(または、クリーンバージョンのDLLを手動でコピーしてください)。

2
BRass

私は次のように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. sfc/scannow

幸運を!

2

ローカルコピーがなく、別の理由でISOファイルをダウンロードできないため(ISOはインストールしたWindows 10タイプではありませんでした) ここにホットフィックスソリューション 使用しました「SFCFix」という専門ファイルをダウンロードします。

SFCFixは、壊れたdllファイルを修復/置換することにより、この問題を修正できる素晴らしい小さなユーティリティです。

SFCFixの実行可能ファイルをダウンロードしたら、デスクトップに移動します。

SFCFixが必要とするすべてを含むZIPファイル 破損したopencl.dllファイルを修復/置換します。ウェブサイトから、Zipファイルにアクセスするために登録するように求められます。Zipファイルは完全に無料なので、そうする必要があります。

Sfcfix.Zipをダウンロードしたら、デスクトップに移動します。開いているプログラムをすべて閉じます。 ZipファイルをSFCFixプログラムの実行可能ファイルにドラッグし、リリースします。

SFCFixが起動し、破損したdllファイルの修正の適用を開始します。魔法を働かせます。

SFCFixが完了すると、デスクトップにSFCFix.txtという名前のファイルが作成されます。このファイルを開き、SFCFixが破損したopencl.dllファイルの修復/置換に成功した場合は、

SFCFix.exeファイルを実行せずに修正プログラムZipを実行すると、処理が非常に遅くなり、Zipで実行する必要があることに注意してください。ファイルのドラッグ/ドロップ方式で、結果はほとんど瞬時です。

1
Martin

Creator's Updateインストールメディアのインストールイメージ(install.esd)は、ここで説明するDISMメソッドと互換性がないようです。どの種類のコマンドを入力しても、エラー0x800f081fが発生します。 ESDファイルから正しいinstall.wimを抽出するのにも役立ちません。最後に、WIMファイルをマウントしてみても無駄に終わりました。

https://www.sysnative.com/forums/windows-10-a/22564-dism-error-0x800f081f.html#post17972 のディスカッションも参照してください

更新:持続するエラーは、dismコマンドやwimファイルとは関係ありません。これは、Microsoft-Windows-TestRoot-and-FlightSigning-Packageという名前のパッケージが原因で、有効なソースを利用できません。ファイルはC:\ Windows\Servicing\Packagesにあり、そこから移動する必要があります。また、削除する必要があるレジストリに2つの参照があります。詳細については、リンクされたsysnativeスレッドを参照してください。

0
Gerd Röthig

DISM technetの記事に従って、esdイメージを利用できるはずです。 ESD(Electronic Software Delivery))イメージは、WIMの暗号化されたバージョンであり、WIMフォーマットよりもはるかに優れた圧縮アルゴリズムを使用しています(通常、約1.5倍優れた圧縮)。

すべてがESDであり、WIMを使用する場合は、DISMエクスポートコマンドを使用してESDをWIMに変換できます。WIMをESD exportまたはcaptureコマンド内で/ compress:recoveryを指定します。一方を他方に変換するとリソースが集中するため、ESD to WIMスクリプトを使用することをお勧めします数年前に書かれ、MSFNフォーラムで入手できます。スクリプトを使用すると、システムリソースの約50%のみがエクスポートに割り当てられます。

0
JW0914

別のWindows 10 Pro x64マシンに行って、opencl.dllファイルを(同じディレクトリから)コピーしました。次に、不正なopencl.dllの所有権を取得し、名前をopencl.oldに変更して、新しいものにコピーしました。セーフモードで再起動し、sfc/scannowを実行すると、正常に戻ります。私の場合、これはcbs.logにリストされている唯一の不良ファイルでした...多くの破損したファイルがあり、それぞれに個別にパッチを適用したくない場合は、sfcを機能させるほうがよい場合があることがわかります。しかし、問題が1つのDLLだけの場合は、単純なコピーが機能するようです。

0
Chris