Làm cách nào để sửa lỗi opencl.dll bị hỏng trong Windows 10, nếu SFC và DISM bị lỗi?


33

Tôi đã mất vài giờ để khắc phục sự cố do cửa hàng thành phần cục bộ bị hỏng và các máy tính đang truy cập máy chủ WSUS cục bộ thay vì máy chủ cập nhật công khai của Microsoft (và vì tôi rất hiếm khi sử dụng Dism). Để tham khảo và giúp đỡ những người khác có cùng vấn đề, tôi sẽ viết ra một mô tả vấn đề và cung cấp giải pháp.

Kể từ khi nâng cấp lên Windows 10 Pro Phiên bản 1511 (Build 10586), tôi gặp vấn đề với một tệp opencl.dll bị hỏng ở một số vị trí.

Tôi đã thử sfc.exe /scannow, nhưng nó không thể khắc phục vấn đề. Các thông báo lỗi là, trong số những người khác:

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

Được rồi, vì vậy vấn đề đã rõ ràng. Thật không may, SFC không thể giải quyết tham nhũng vì cửa hàng thành phần địa phương cũng bị hỏng. Thật không may, tôi bị mất các thông báo lỗi cho thấy các lỗi lưu trữ thành phần.

Vì vậy, tôi đã cố gắng Dism /Online /Cleanup-Image /RestoreHealthvô ích. Nó không thành công với lỗi 0x800f081f , chỉ ra một vấn đề khác với các tệp nguồn.

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]

Nhìn vào các thông báo lỗi, có thể thấy rõ rằng Windows được thiết lập để sử dụng máy chủ WSUS cục bộ của chúng tôi và do đó Dism không thể truy xuất tệp hợp lệ từ kho lưu trữ. Mặc dù tôi chắc chắn rằng bằng cách nào đó tôi có thể định cấu hình WSUS để cung cấp các tệp cần thiết, tôi không biết làm thế nào và tôi cần sửa chữa nhanh. (Nếu ai đó biết cách định cấu hình WSUS phù hợp, vui lòng cung cấp thông tin).

Hạn chế quyền truy cập vào bộ lưu trữ cục bộ bằng cách thêm tham số /LimitAccesssẽ vô ích vì cửa hàng thành phần cục bộ cũng bị hỏng, như đã đề cập trước đó.

Tôi gặp vấn đề này trên hai máy. Việc làm mới Windows 10 không khắc phục được sự cố.


fwiw có một chủ đề dài ở đây answer.microsoft.com/en-us/windows/forum/ trộm về các vấn đề với dll này.
Rory

Câu trả lời:


42

Để khắc phục sự cố này, bạn cần có ISO của bản dựng chính xác mà bạn đã cài đặt.

  1. Gắn hình ảnh ISO.
  2. Tạo một thư mục tạm thời để gắn tệp Windows Image File (WIM).
    mkdir C:\WIM
  3. Gắn tệp WIM.
    Dism /Mount-Wim /WimFile:D:\sources\install.wim /index:1 /MountDir:C:\WIM /ReadOnly
  4. Chạy Dism với các tham số sau.
    Dism /Online /Cleanup-Image /RestoreHealth /Source:C:\WIM\Windows /LimitAccess
  5. Khi hoàn tất, ngắt kết nối hình ảnh và xóa thư mục
    Dism /Unmount-Wim /MountDir:C:\WIM /Discard rmdir C:\WIM
  6. Bắt buộc phải khởi động lại máy tính của bạn, hoặc SFC và DISM vẫn sẽ hiển thị lỗi.

Điều đó sẽ khắc phục vấn đề.

Chỉnh sửa
Như đã chỉ ra trong các ý kiến, có thể có một cách tiếp cận trực tiếp hơn. TL; DR là, nó không hoạt động đối với tôi, do đó cách tiếp cận chi tiết hơn của tôi. Nhưng tôi quan tâm nếu bạn có bất kỳ vấn đề với cách tiếp cận trực tiếp. Hãy bình luận.


2
bạn có thể trỏ đến WIM mà không cần phải gắn WIM: superuser.com/a/870956/174557
magicandre1981 8/12/2015

3
@ magicandre1981 cảm ơn bạn đã bình luận. Tôi đọc về điều đó và tôi đã cố gắng vô ích. Nó luôn luôn thất bại với một lỗi, đó là 0x800f081f tôi nhớ đúng. Thật đáng ngạc nhiên khi tôi không thể tìm thấy bất cứ điều gì liên quan đến /source:wimtham số trong tài liệu chính thức cho Tùy chọn dòng lệnh Dism .
Daniel

Tôi đọc nó ở đây trong nội dung để kích hoạt các tính năng: blog.technet.com/b/joscon/archive/2013/03/29/ mẹo
magicandre1981 8/12/2015

2
điều này cũng giúp ích cho những người dùng khác : borncity.com/blog/2015/12/09/ Ấn lạ rằng việc gắn kết hoạt động, nhưng trực tiếp vượt qua WIM thì không.
magicandre1981

4
Sau khi tải xuống hình ảnh Windows 10 bằng Công cụ tạo phương tiện, tại đây: microsoft.com/en-ca/software-doad/windows10 , kết quả img có cài đặt.esd trong đó phải được chuyển đổi thành WIM để được gắn kết bởi Dism. Tôi đã sử dụng NTLite để làm như vậy. Sau đó, hướng dẫn của Daniel hoạt động tốt. Chỉ cần lưu ý rằng tham số / index trong bước thứ ba có thể sẽ phản ánh phiên bản Windows, Pro hoặc Home, mà bạn đang khôi phục (nói cách khác, sử dụng / index: 1 cho Pro và / index: 2 cho Home)
Eli B.

10

Từ các diễn đàn khác nhau trên Internet, tôi đã tập hợp các quy trình sửa chữa sau:

  1. Tải xuống MediaCreationTool từ http://go.microsoft.com/fwlink/?LinkId=691209
  2. Tải về Windows 10 Pro ISO với MediaCreationTool.exetớic:\temp\windows.iso
  3. Sử dụng 7-zip để giải nén tập tin c:\temp\windows.isovào thư mụcc:\temp\windows
  4. Chuyển đổi install.esdsanginstall.wim

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

  5. Kiểm tra chỉ mục và phiên bản windows trong chỉ mục .wimtệp
    -được sử dụng cho lệnh Dism tiếp theo trong tham số/Source:wim:path_to_wim:[index]

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

  6. Khôi phục các thành phần cửa sổ sức khỏe từ hình ảnh cửa sổ được tải xuống và chuyển đổi (wim):

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

  7. Sửa các tệp bị hỏng:

    sfc /scannow

    Nó sẽ sửa chữa các tập tin bị hỏng - thông báo thành công: Windows Resource Protection found corrupt files and successfully repaired them.

  8. Khởi động lại Windows
  9. Kiểm tra lại các tệp hệ thống để chắc chắn sửa chữa thành công:

    sfc /scannow

    Thông báo thành công sau khi quét: Windows Resource Protection did not find any integrity violations.


1
Cảm ơn điều này cuối cùng đã sửa lỗi cài đặt Windows 10 của tôi mà tôi mới thực hiện cài đặt sạch cách đây không lâu. Có vẻ như bị vặn và sfc không thành công ngay sau khi cài đặt sạch! Dù sao cũng sẽ thấy nó cố định bao lâu lần này! Đoán Microsoft vẫn chưa cố định nó trong mới nhất giành chiến thắng 10 cập nhật kể từ dường như được biết đến vấn đề cho năm 1511 xây dựng news.softpedia.com/news/... ps không phải làm bước 4 mặc dù kể từ install.wim đã ở đó khi tôi trích xuất các cửa sổ ISO.
daveangel

Cảm ơn bạn đã phản hồi. Trình kiểm tra tệp hệ thống sẽ bị hỏng sau khi cài đặt trình duyệt đồ họa. Nhưng bây giờ là đủ để sửa chữa hệ thống chỉ với SFC / SCANNOW chạy - Có vẻ như bây giờ đã có phiên bản đúng của opencl.dll trong thư mục winxs. PS: Đó là sự thật, bước 4 có thể bị cấm, nếu bạn tải xuống ISO có thể khởi động, nhưng công cụ tạo phương tiện chỉ tải xuống tệp ESD (phiên bản được thiết kế để nâng cấp Windows 10). Media Creation Tool là lựa chọn tốt nhất để tự động tải xuống phương tiện cài đặt chính xác :-)
kapitanrum

Bước 4 (trích xuất tệp WIM) đã làm điều đó cho tôi. Hướng dẫn tuyệt vời. Cảm ơn.
Ravi Wallau

1
Bước 6 không thành công với tôi với "không thể tìm thấy tệp nguồn", lỗi 0x800f091f
đơn giản hóa

Tôi đã xử lý lỗi 0x800f091f và vấn đề có thể là do cài đặt .NET Framework 3.5. Nếu bạn chỉ có phiên bản 4+, thì hãy thử cài đặt phiên bản 3.5. Hãy thử hướng dẫn cài đặt MS: msdn.microsoft.com/en-us/l
Library / hh506443 (v = vs.110) .aspx

4

Một ESD không phải là một WIM "được mã hóa", nó là một WIM được đóng gói / tái mã hóa rất khác nhau (với cấu trúc phức tạp hơn).

WIM chỉ được nén "nhanh" bởi các đơn vị 4KB hoặc 16KB không thể phá vỡ, sử dụng nén Huffmann nhanh. Một ESD sử dụng nén dựa trên LZ tiên tiến hơn mà không giới hạn kích thước khối. Quá trình nén này không cho phép hình ảnh được mở ở chế độ đọc-ghi vì quá trình nén là toàn cầu (mỗi tệp trong kho lưu trữ không còn được nén riêng, nhiều tệp logic có thể chia sẻ lưu trữ thực tế của các phân đoạn, để đạt được độ nén cao hơn mức, đáng chú ý là khi có nhiều tệp nhỏ với các phần tiêu đề chung, chẳng hạn như bộ sưu tập các biểu tượng hoặc các phần của dữ liệu chữ ký số, thông báo bản quyền, tiêu đề HTML, tập lệnh nhúng, v.v.).

SWM là một WIM nhiều phần đã được chia thành nhiều tệp với kích thước nhỏ hơn với kích thước tối đa (thô), nhưng nó vẫn có thể ghi và có thể được lưu trữ trên nhiều DVD.

Các nhà cung cấp CBS cho phép một số định dạng lưu trữ có thể được DISM hỗ trợ, bao gồm WIM, CAB, ZIP, VHD, VHDX, ISO multisession ... Nhưng Windows đi kèm với hai nhà cung cấp tích hợp cho các định dạng WIM và ESD (ESD mới đối với Windows 10, với Windows 8, chỉ có định dạng WIM được hỗ trợ, nhưng hình ảnh lớn hơn)

Định dạng ESD đã được điều chỉnh để cho phép phân phối đa ngôn ngữ đầy đủ của Windows 10 phù hợp với một đĩa DVD có ít hơn 3 GB ...

Bạn có thể chuyển đổi một ESD thành WIM, nhưng kết quả sẽ là một tệp lớn hơn nhiều. Cũng có thể chuyển đổi ngược lại (để bạn có thể đọc-ghi trong WIM mở rộng) để đóng gói lại thành một bản tin mới. Việc giải nén ESD thành WIM tương đối nhanh, nhưng việc nén WIM thành ESD đòi hỏi nhiều nguồn tài nguyên CPU và lâu hơn (đó là lý do tại sao bạn không thể đọc trực tiếp vào một ESD nhưng bạn có thể thực hiện điều đó khá dễ dàng trong WIM một cách khiêm tốn Sử dụng CPU).

Khi bạn "gắn kết" một ESD với DISM, điều đầu tiên nó sẽ làm là mở rộng ESD thành một bộ lưu trữ tạm thời và hành động như thể nó là WIM, để bạn có thể cập nhật các tệp trong bộ lưu trữ cục bộ này. Việc ngắt kết nối sẽ yêu cầu hai bước: tạo lại WIM (khá nhanh), sau đó đóng gói lại thành một bản ESD (rất chậm).



2

Tôi đã dành một vài ngày để đi xuống những con đường này và cuối cùng tìm thấy một giải pháp cho tình huống của tôi. Tôi đang chạy Windows 10 phiên bản 1511 Build 10586.545. Đây là sự tiến bộ của tôi:

  1. Điều này bắt đầu với tôi với lỗi Windows Update (lỗi 0x800705b4).
  2. Sau đó, tôi đã xử lý lỗi này khi khắc phục sự cố Windows Update, WUResets, vô hiệu hóa phần mềm chống vi-rút, v.v. Liên kết này là một bài viết tốt cung cấp các tùy chọn cho vấn đề đó (mặc dù chúng không giúp tôi)
  3. Sau đó tôi đã đi xuống con đường DISM và SFC. Bài đăng trên ServerFault này rất hữu ích trong nỗ lực đó. Thật không may, không có lựa chọn nào trong số này giúp được. Tôi liên tục nhận được thông báo rằng tôi có tệp opencl.dll bị hỏng và chạy tất cả các loại biến thể của DISM / RestoreHealth không hoạt động. Tôi tiếp tục nhận được 0x800f081f (Không thể tìm thấy tệp nguồn)
  4. Tiếp theo tôi đã cố gắng sao chép thủ công opencl.dll từ ISO sạch vào C: \ Windows \ SysWOW64. Điều này không bao giờ hoạt động, ngay cả sau khi gặp rắc rối với quyền sở hữu, v.v. Cuối cùng tôi đã vô hiệu hóa trình điều khiển GPU NVIDIA GeForce trong Trình quản lý thiết bị (Để trình điều khiển Intel vẫn bật hiển thị) và có thể sao chép opencl.dll sạch vào C: \ Windows \ SysWOW64.

Từ đây, Windows Update bắt đầu hoạt động trở lại.

Vì vậy, tóm lại, nếu bạn đang vật lộn với các lỗi này và dường như không có gì hoạt động, hãy thử vô hiệu hóa trình điều khiển NVIDIA GeForce và sau đó thử một số bước này (hoặc sao chép thủ công trong phiên bản sạch của DLL).


1

Do không có bản sao cục bộ và vì một lý do riêng biệt không thể tải xuống tệp ISO (ISO không phải là loại Windows 10 tôi đã cài đặt) Có một giải pháp hotfix ở đây mà tôi đã sử dụng liên quan đến việc tải xuống tệp chuyên gia có tên "SFCFix ":

SFCFix là một tiện ích nhỏ tuyệt vời có khả năng khắc phục sự cố này cho bạn bằng cách sửa chữa / thay thế tệp dll bị hỏng.

Khi tệp thực thi cho SFCFix đã được tải xuống, hãy di chuyển nó vào Bàn làm việc của bạn.

Một tập tin ZIP có chứa tất cả mọi thứ SFCFix cần để sửa chữa / thay thế các tập tin opencl.dll hỏng của bạn. Bạn sẽ được trang web yêu cầu đăng ký trên đó để có quyền truy cập vào tệp ZIP, bạn nên làm như vậy vì nó hoàn toàn miễn phí.

Khi sfcfix.zip đã được tải xuống, hãy di chuyển nó đến Desktop của bạn. Đóng tất cả các chương trình đang mở. Kéo tệp ZIP vào tệp thực thi cho chương trình SFCFix và sau đó phát hành tệp.

SFCFix sẽ khởi chạy và bắt đầu áp dụng sửa lỗi cho tệp dll bị hỏng. Hãy để nó làm việc kỳ diệu của nó.

Khi SFCFix hoàn thành, nó sẽ tạo một tệp có tên SFCFix.txttrên Bàn làm việc của bạn. Mở tệp này và, nếu SFCFix thành công trong việc sửa chữa / thay thế tệp opencl.dll bị hỏng của bạn,

Xin lưu ý rằng việc chạy tệp SFCFix.exe mà không cần ZIP ZIP sẽ là một quá trình chậm dài mà đạt được rất ít, bạn cần chạy nó bằng phương pháp kéo / thả tệp ZIP và kết quả gần như ngay lập tức.


0

Bạn sẽ có thể sử dụng một hình ảnh esd, theo bài viết kỹ thuật DISM. Hình ảnh ESD (Phân phối phần mềm điện tử) chỉ đơn giản là phiên bản được mã hóa của WIM và cũng sử dụng thuật toán nén tốt hơn nhiều so với định dạng WIM (thường là khoảng 1,5 lần nén tốt hơn).

Nếu tất cả những gì có là một ESD, nhưng muốn sử dụng WIM, bạn có thể chuyển đổi một ESD thành WIM bằng lệnh xuất DISM. Bạn cũng có thể chuyển đổi WIM thành ESD bằng cách chỉ định / nén: recovery trong lệnh xuất hoặc chụp. Chuyển đổi cái này sang cái khác rất tốn tài nguyên và vì điều này, nên sử dụng tập lệnh ESD thành WIM đã được viết từ nhiều năm trước và có sẵn trên diễn đàn MSFN. Sử dụng tập lệnh, chỉ ~ 50% tài nguyên hệ thống được dành riêng cho xuất khẩu so với 90% + thường được sử dụng cho xuất khẩu.


0

Tôi vừa đi đến một máy Windows 10 Pro x64 khác và sao chép tệp opencl.dll (từ cùng thư mục). Sau đó, tôi đã sở hữu opencl.dll xấu, đổi tên thành opencl.old và sao chép trong cái mới. Khởi động lại vào chế độ an toàn và chạy sfc / scannow và nó trở lại tốt. Trong trường hợp của tôi, đây là tệp xấu CHỈ được liệt kê trong cbs.log ... Tôi có thể thấy nơi nào có thể hoạt động tốt hơn nếu bạn có nhiều tệp bị hỏng và không muốn vá từng tệp riêng lẻ. Nhưng nếu vấn đề của bạn chỉ là một dll, thì một bản sao đơn giản dường như hoạt động.


0

Có vẻ như hình ảnh cài đặt ( install.esd) từ phương tiện cài đặt Cập nhật của người tạo không tương thích với phương pháp DISM được mô tả ở đây. Bạn sẽ gặp lỗi cho 0x800f081fdù bạn gõ loại lệnh nào. Nó cũng không giúp trích xuất chính xác install.wimra khỏi tập tin ESD. Cuối cùng, tôi thậm chí đã thử gắn tập tin WIM nhưng không có kết quả.

Xem thêm các cuộc thảo luận tại https://www.sysnative.com/forums/windows-10-a/22564-dism-error-0x800f081f.html#post179723

Cập nhật: Lỗi liên tục không liên quan gì đến lệnh dỡ bỏ hoặc các tệp wim. Đó là do gói có tên Microsoft-Windows-TestRoot-and-FlightSigning-Gói mà không có nguồn làm việc nào khả dụng. Các tệp nằm trong C: \ Windows \ Phục vụ \ Gói và phải được di chuyển khỏi đó. Ngoài ra, có hai tài liệu tham khảo trong sổ đăng ký phải được xóa. Xem chủ đề sysnative liên kết để biết chi tiết.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.