Bagaimana cara memperbaiki opencl.dll yang rusak di Windows 10, jika SFC dan DISM gagal?

33

Butuh beberapa jam untuk memperbaiki masalah ini karena toko komponen lokal rusak dan komputer mengakses server WSUS lokal alih-alih server pembaruan publik oleh Microsoft (dan karena saya jarang menggunakan Dism). Untuk referensi dan membantu orang lain dengan masalah yang sama, saya akan menuliskan deskripsi masalah dan memberikan solusi.

Sejak memutakhirkan ke Windows 10 Pro Versi 1511 (Build 10586) saya punya masalah dengan opencl.dll diajukan rusak di beberapa lokasi.

Saya mencoba sfc.exe /scannow, tetapi gagal untuk memperbaiki masalah. Pesan-pesan kesalahan tersebut antara lain:

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

Oke, jadi masalahnya sudah jelas sekarang. Sayangnya, SFC tidak dapat menyelesaikan korupsi karena toko komponen lokal juga rusak. Sayangnya, saya kehilangan pesan kesalahan yang menunjukkan kerusakan penyimpanan komponen.

Jadi saya mencoba tetapi Dism /Online /Cleanup-Image /RestoreHealthtidak berhasil. Gagal dengan kesalahan 0x800f081f , menunjukkan masalah lain dengan file sumber.

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]

Melihat pesan kesalahan, menjadi jelas bahwa Windows diatur untuk menggunakan server WSUS lokal kami dan karena itu Dism tidak dapat mengambil file yang valid dari repositori. Meskipun saya yakin bahwa saya entah bagaimana dapat mengkonfigurasi WSUS untuk menyediakan file yang diperlukan, saya tidak tahu caranya dan saya perlu perbaikan cepat. (Jika seseorang tahu cara mengkonfigurasi WSUS yang sesuai, berikan informasi).

Membatasi akses ke penyimpanan lokal dengan menambahkan paramter /LimitAccessakan sia-sia karena toko komponen lokal juga rusak, seperti yang disebutkan sebelumnya.

Saya mengalami masalah ini pada dua mesin. Sebuah penyegaran Windows 10 tidak memperbaiki masalah.

Daniel
sumber
fwiw ada utas panjang di sini answer.microsoft.com/en-us/windows/forum/… tentang masalah dengan dll ini.
Rory

Jawaban:

42

Untuk memperbaiki masalah ini, Anda harus memiliki ISO dari bangunan yang telah Anda pasang.

  1. Pasang gambar ISO.
  2. Buat direktori sementara untuk memasang Windows Image File (WIM).
    mkdir C:\WIM
  3. Pasang file WIM.
    Dism /Mount-Wim /WimFile:D:\sources\install.wim /index:1 /MountDir:C:\WIM /ReadOnly
  4. Jalankan Dism dengan parameter berikut.
    Dism /Online /Cleanup-Image /RestoreHealth /Source:C:\WIM\Windows /LimitAccess
  5. Setelah selesai, unmount gambar dan hapus folder
    Dism /Unmount-Wim /MountDir:C:\WIM /Discard rmdir C:\WIM
  6. Ini wajib untuk me-restart komputer Anda, atau SFC dan DISM masih akan menunjukkan kesalahan.

Itu harus memperbaiki masalah.

Sunting
Seperti yang ditunjukkan dalam komentar, mungkin ada pendekatan yang lebih langsung. TL; DR adalah, bahwa itu tidak berhasil untuk saya, maka pendekatan saya lebih rinci. Tetapi saya tertarik jika Anda memiliki masalah dengan pendekatan langsung. Tolong beri saran.

Daniel
sumber
2
Anda dapat mengarahkan ke WIM tanpa perlu memasang WIM: superuser.com/a/870956/174557
magicandre1981
3
@ magicandre1981 terima kasih atas komentar Anda. Saya membaca tentang itu dan saya mencobanya tetapi tidak berhasil. Selalu gagal dengan kesalahan, itu 0x800f081f jika saya ingat benar. Sangat mengejutkan melihat bahwa saya tidak dapat menemukan apa pun mengenai /source:wimparameter dalam dokumentasi resmi untuk Opsi Baris Perintah Dism .
Daniel
Saya membacanya di sini dalam konten untuk mengaktifkan fitur: blogs.technet.com/b/joscon/archive/2013/03/29/...
magicandre1981
2
ini juga membantu untuk pengguna lain: borncity.com/blog/2015/12/09/... aneh bahwa pemasangan berfungsi, tetapi secara langsung melewati WIM tidak.
magicandre1981
4
Setelah mengunduh gambar Windows 10 menggunakan Media Creation Tool, di sini: microsoft.com/en-ca/software-download/windows10 img yang dihasilkan memiliki install.esd di dalamnya yang harus dikonversi ke WIM agar dapat dipasang oleh Dism. Saya menggunakan NTLite untuk melakukannya. Setelah itu, instruksi Daniel bekerja dengan baik. Harap perhatikan bahwa parameter / indeks pada langkah ketiga mungkin harus mencerminkan versi Windows, Pro atau Home, yang Anda pulihkan (dengan kata lain, gunakan / index: 1 untuk Pro dan / index: 2 untuk Home)
Eli B.
10

Dari berbagai forum di Internet, saya telah menyusun prosedur perbaikan berikut:

  1. Unduh MediaCreationTool dari http://go.microsoft.com/fwlink/?LinkId=691209
  2. Unduh Windows 10 Pro ISO dengan MediaCreationTool.exetoc:\temp\windows.iso
  3. Gunakan 7-zip untuk mengekstrak file c:\temp\windows.isoke folderc:\temp\windows
  4. Konversikan install.esdkeinstall.wim

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

  5. Periksa indeks dan versi windows dalam indeks .wimfile
    -digunakan untuk perintah Dism berikutnya dalam parameter/Source:wim:path_to_wim:[index]

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

  6. Kembalikan komponen windows kesehatan dari windows image yang diunduh dan dikonversi (wim):

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

  7. Perbaiki file yang rusak:

    sfc /scannow

    Ini akan memperbaiki file yang rusak - pesan sukses: Windows Resource Protection found corrupt files and successfully repaired them.

  8. Mulai ulang Windows
  9. Periksa file Sistem lagi untuk memastikan perbaikan berhasil:

    sfc /scannow

    Pesan sukses setelah pemindaian: Windows Resource Protection did not find any integrity violations.

kapitanrum
sumber
1
Terima kasih, ini akhirnya memperbaiki instalasi Windows 10 saya yang baru saja saya lakukan instalasi bersih belum lama ini. Tampaknya kacau dan sfc gagal segera bahkan setelah melakukan instalasi bersih! Anyways akan melihat berapa lama tetap diperbaiki saat ini! Kira Microsoft masih belum memperbaikinya di pembaruan win 10 terbaru karena tampaknya dikenal masalah untuk 1511 build news.softpedia.com/news/... ps tidak harus melakukan langkah 4 meskipun sejak install.wim sudah ada ketika saya mengekstrak ISO windows.
daveangel
Terimakasih atas responnya. Pemeriksa file sistem akan rusak setelah menginstal dirvers grafik. Tetapi sekarang sudah cukup untuk memperbaiki sistem hanya dengan menjalankan SFC / SCANNOW - Sepertinya sekarang sudah tersedia versi opencl.dll yang benar di folder winsxs. PS: Benar, langkah 4 mungkin dinonaktifkan, jika Anda mengunduh ISO yang dapat di-boot, tetapi alat pembuatan media hanya mengunduh file ESD (versi yang dirancang untuk memutakhirkan Windows 10). Media Creation Tool adalah pilihan terbaik untuk mengunduh media instalasi yang benar secara otomatis :-)
kapitanrum
Langkah 4 (mengekstraksi file WIM) melakukannya untuk saya. Panduan luar biasa. Terima kasih.
Ravi Wallau
1
langkah 6 gagal bagi saya dengan "file sumber tidak dapat ditemukan", kesalahan 0x800f091f
simpleuser
Saya mencari Google untuk kesalahan 0x800f091f dan masalah mungkin dengan instalasi .NET Framework 3.5. Jika Anda hanya memiliki versi 4+, maka cobalah menginstal versi 3.5 juga. Coba panduan instalasi MS: msdn.microsoft.com/en-us/library/hh506443(v=vs.110).aspx
kapitanrum
4

ESD bukan WIM "terenkripsi", itu adalah WIM yang telah sangat dikemas / reencoded sangat berbeda (dengan struktur yang lebih kompleks).

WIM hanya "cepat" dikompresi oleh unit 4KB atau 16KB yang tidak bisa dipecahkan, menggunakan kompresi Huffmann cepat. ESD menggunakan kompresi berbasis LZ yang lebih maju tanpa batasan ukuran blok. Kompresi ini tidak memungkinkan gambar terbuka dalam mode baca-tulis karena kompresi bersifat global (setiap file dalam arsip tidak lagi dikompresi secara terpisah, beberapa file logis dapat berbagi penyimpanan segmen yang sebenarnya, untuk mencapai kompresi yang lebih tinggi lagi. tingkat, terutama ketika ada banyak file kecil dengan bagian header umum, seperti koleksi ikon, atau bagian dari data tanda tangan digital mereka, pemberitahuan hak cipta, header HTML, skrip tertanam dan sebagainya).

SWM adalah WIM multi-bagian yang telah dipecah menjadi beberapa file dengan ukuran lebih kecil dengan ukuran maksimum (kasar), tetapi masih dapat ditulisi, dan dapat disimpan pada banyak DVD.

Penyedia CBS memungkinkan beberapa format pengarsipan yang dapat didukung oleh DISM, termasuk WIM, CAB, ZIP, VHD, VHDX, ISO multi-sesi ... Tetapi Windows dilengkapi dengan dua penyedia bawaan untuk format WIM dan ESD (ESD baru untuk Windows 10, dengan Windows 8, hanya format WIM yang didukung, tetapi gambarnya lebih besar)

Format ESD telah disetel untuk memungkinkan distribusi multibahasa penuh Windows 10 sesuai pada satu DVD dengan kurang dari 3GB ...

Anda dapat mengubah ESD menjadi WIM, tetapi hasilnya akan menjadi file yang jauh lebih besar. Konversi terbalik juga dimungkinkan (sehingga Anda dapat membaca-menulis dalam WIM yang diperluas) untuk mengemasnya lagi ke dalam ESD baru. Mengompres ESD ke WIM relatif cepat, tetapi mengompresi WIM ke ESD membutuhkan banyak sumber daya CPU dan jauh lebih lama (itu sebabnya Anda tidak dapat membaca-menulis langsung ke ESD tetapi Anda dapat melakukannya dengan mudah di WIM dengan sederhana) Penggunaan CPU).

Saat Anda "memasang" ESD dengan DISM, hal pertama yang harus dilakukan adalah memperluas ESD menjadi penyimpanan sementara dan bertindak seolah-olah itu adalah WIM, sehingga Anda dapat memperbarui file di penyimpanan lokal ini. Melepasnya akan membutuhkan dua langkah: membuat ulang WIM (cukup cepat), lalu kemas lagi ke dalam ESD (sangat lambat).

verdy_p
sumber
2

Saya memecahkan masalah dengan opengl.dll sebagai berikut:

  1. Pasang gambar Windows 10.

  2. Dism / Online / Cleanup-Image / RestoreHealth / Sumber: esd: F: \ sources \ install.esd \ 1 \ Windows \ WinSxS \ wow64_microsoft-windows-r..xwddmdriver-wow64-c_31bf3856ad364e35_10.0.10.108686_none_3dae054

  3. sfc / scannow

Semoga berhasil!

Vitaly Stelmakov
sumber
6
ESD ISO tidak memulihkan Windows Image. Anda harus menggunakan ONLY WIM ISO, yang dapat Anda unduh dari microsoft.com/en-us/software-download/techbench
23W
2

Saya menghabiskan beberapa hari menyusuri jalan setapak ini dan akhirnya menemukan solusi untuk situasi saya. Saya menjalankan Windows 10 versi 1511 Build 10586.545. Ini perkembangan saya:

  1. Ini dimulai untuk saya dengan kegagalan Pembaruan Windows (kesalahan 0x800705b4).
  2. Saya kemudian mengejar kesalahan ini dengan melakukan pemecahan masalah Pembaruan Windows, WURESET, menonaktifkan antivirus, dll. Tautan ini adalah artikel bagus yang memberikan opsi untuk masalah itu (walaupun mereka tidak membantu saya)
  3. Saya kemudian pergi ke jalur DISM dan SFC. Posting ServerFault ini sangat membantu dalam upaya itu. Sayangnya tidak ada opsi ini yang membantu. Saya terus diberi tahu bahwa saya memiliki file opencl.dll yang korup, dan menjalankan segala macam variasi DISM / RestoreHealth tidak berfungsi. Saya terus mendapatkan 0x800f081f (File sumber tidak dapat ditemukan)
  4. Saya selanjutnya mencoba menyalin opencl.dll secara manual dari ISO bersih ke C: \ Windows \ SysWOW64. Ini tidak pernah berhasil, bahkan setelah bermain-main dengan mengambil kepemilikan, dll. Saya akhirnya menonaktifkan driver NVIDIA GeForce GPU di Device Manager (Membiarkan driver Intel masih mengaktifkan tampilan), dan dapat menyalin opencl.dll bersih ke C: \ Windows \ SysWOW64.

Dari sini, Pembaruan Windows mulai bekerja lagi.

Jadi secara ringkas, jika Anda kesulitan dengan kesalahan ini dan sepertinya tidak ada yang berhasil, coba nonaktifkan driver NVIDIA GeForce dan kemudian coba beberapa langkah ini (atau menyalin secara manual dalam versi bersih dari DLL).

Kuningan
sumber
1

Karena tidak memiliki salinan lokal dan karena alasan terpisah tidak dapat mengunduh file ISO (ISO bukan tipe Windows 10 yang saya instal) Ada solusi perbaikan terbaru di sini yang saya gunakan yang melibatkan pengunduhan file khusus yang disebut "SFCFix ":

SFCFix adalah utilitas kecil yang brilian yang mampu memperbaiki masalah ini untuk Anda dengan memperbaiki / mengganti file dll yang rusak.

Setelah file yang dapat dieksekusi untuk SFCFix telah diunduh, pindahkan ke Desktop Anda.

Sebuah file ZIP yang berisi segala sesuatu SFCFix perlu untuk memperbaiki / mengganti file yang opencl.dll korup. Anda akan diminta oleh situs web untuk mendaftar untuk mendapatkan akses ke file ZIP, Anda harus melakukannya karena sepenuhnya gratis.

Setelah sfcfix.zip diunduh, pindahkan ke Desktop Anda. Tutup semua program yang terbuka. Seret file ZIP ke file yang dapat dieksekusi untuk program SFCFix dan kemudian lepaskan.

SFCFix akan meluncurkan dan mulai menerapkan perbaikan untuk file dll yang rusak. Biarkan itu bekerja keajaibannya.

Setelah SFCFix selesai, itu akan membuat file bernama SFCFix.txtdi Desktop Anda. Buka file ini dan, jika SFCFix berhasil memperbaiki / mengganti file opencl.dll Anda yang rusak,

Harap dicatat bahwa menjalankan file SFCFix.exe tanpa perbaikan terbaru ZIP akan menjadi proses yang panjang dan lambat yang mencapai sangat sedikit, Anda perlu menjalankannya dengan metode seret / jatuhkan file ZIP, dan hasilnya hampir instan.

Martin
sumber
0

Anda harus dapat menggunakan gambar esd, sesuai artikel teknik DISM. Gambar ESD (Pengiriman Perangkat Lunak Elektronik) hanyalah versi terenkripsi dari WIM, dan juga menggunakan algoritma kompresi yang jauh lebih baik daripada format WIM (umumnya sekitar 1,5x lebih baik kompresi).

Jika semua yang dimiliki adalah ESD, tetapi lebih suka menggunakan WIM, Anda dapat mengonversi ESD ke WIM dengan perintah ekspor DISM. Anda juga dapat mengonversi WIM ke ESD dengan menetapkan / kompres: pemulihan dalam perintah ekspor atau ambil. Konversi satu ke yang lain adalah sumber daya intensif, dan karena ini, disarankan untuk menggunakan skrip ESD ke WIM yang ditulis tahun lalu dan tersedia di forum MSFN. Memanfaatkan skrip, hanya ~ 50% dari sumber daya sistem didedikasikan untuk ekspor versus + 90% yang umumnya digunakan untuk ekspor.

JW0914
sumber
0

Saya baru saja pergi ke mesin Windows 10 Pro x64 lain dan menyalin file opencl.dll (dari direktori yang sama). Kemudian saya mengambil kepemilikan opencl.dll yang buruk, menamainya menjadi opencl.old, dan menyalin yang baru. Reboot kembali ke safe mode dan jalankan sfc / scannow dan itu kembali bagus. Dalam kasus saya, ini adalah satu-satunya file buruk yang terdaftar di cbs.log ... Saya dapat melihat di mana mungkin lebih baik untuk memiliki pekerjaan sfc jika Anda memiliki banyak file yang rusak dan tidak ingin menambal masing-masing secara individual. Tetapi jika masalah Anda hanya satu dll, maka salinan sederhana tampaknya berhasil.

Chris
sumber
0

Tampaknya gambar instal ( install.esd) dari media instalasi Pembaruan Creator tidak kompatibel dengan metode DISM yang dijelaskan di sini. Anda akan mendapatkan kesalahan 0x800f081fapa pun jenis perintah yang Anda ketikkan. Itu juga tidak membantu untuk mengekstrak yang benar install.wimdari file ESD. Akhirnya, saya bahkan mencoba memasang file WIM tetapi tidak berhasil.

Lihat juga diskusi di https://www.sysnative.com/forums/windows-10-a/22564-dism-error-0x800f081f.html#post179723

Pembaruan: Kesalahan yang terjadi tidak ada hubungannya dengan perintah dism atau file wim. Itu karena paket bernama Microsoft-Windows-TestRoot-dan-FlightSigning-Package yang tidak tersedia sumber kerjanya. File-file di C: \ Windows \ Servicing \ Packages dan harus dipindahkan dari sana. Juga, ada dua referensi dalam registri yang harus dihapus. Lihat utas sysnative tertaut untuk detailnya.

Gerd Röthig
sumber