Naprawienie problemu zajęło mi kilka godzin, ponieważ lokalny magazyn składników został uszkodzony, a komputery uzyskują dostęp do lokalnego serwera WSUS zamiast publicznego serwera aktualizacji firmy Microsoft (i ponieważ bardzo rzadko używam Dism). W celach informacyjnych i aby pomóc innym osobom z tym samym problemem, napiszę opis problemu i przedstawię rozwiązanie.
Od czasu uaktualnienia do systemu Windows 10 Pro w wersji 1511 (kompilacja 10586) mam problem z uszkodzonym plikiem opencl.dll w kilku lokalizacjach.
Próbowałem sfc.exe /scannow
, ale nie udało się rozwiązać problemu. Komunikaty o błędach to między innymi:
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
Okej, więc problem jest teraz jasny. Niestety SFC nie jest w stanie rozwiązać problemu, ponieważ lokalny magazyn komponentów również został uszkodzony. Niestety zgubiłem komunikaty o błędach wskazujące na uszkodzenie magazynu składników.
Więc próbowałem Dism /Online /Cleanup-Image /RestoreHealth
bezskutecznie. Błąd kończy się błędem 0x800f081f , który wskazuje na inny problem z plikami źródłowymi.
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]
Patrząc na komunikaty o błędach, staje się jasne, że system Windows jest skonfigurowany do korzystania z naszego lokalnego serwera WSUS i dlatego Dism nie jest w stanie pobrać poprawnego pliku z repozytoriów. Chociaż jestem pewien, że mógłbym jakoś skonfigurować WSUS, aby zapewniał niezbędne pliki, nie wiem jak i potrzebuję szybkiej poprawki. (Jeśli ktoś wie, jak odpowiednio skonfigurować WSUS, proszę podać informacje).
Ograniczenie dostępu do lokalnej pamięci przez dodanie parametru /LimitAccess
byłoby bezużyteczne, ponieważ lokalny magazyn komponentów jest również uszkodzony, jak wspomniano wcześniej.
Ten problem wystąpił na dwóch komputerach. Odświeżania systemu Windows 10 nie rozwiąże problemu.
źródło
Odpowiedzi:
Aby rozwiązać ten problem, musisz mieć ISO dokładnie zainstalowanej kompilacji.
mkdir C:\WIM
Dism /Mount-Wim /WimFile:D:\sources\install.wim /index:1 /MountDir:C:\WIM /ReadOnly
Dism /Online /Cleanup-Image /RestoreHealth /Source:C:\WIM\Windows /LimitAccess
Dism /Unmount-Wim /MountDir:C:\WIM /Discard rmdir C:\WIM
To powinno rozwiązać problem.
Edytuj
Jak wskazano w komentarzach, podejście może być bardziej bezpośrednie. TL; DR jest takie, że to nie działało dla mnie, stąd moje bardziej szczegółowe podejście. Jestem jednak zainteresowany, jeśli miałbyś jakieś problemy z bezpośrednim podejściem. Proszę skomentuj.
źródło
/source:wim
parametru w oficjalnej dokumentacji opcji wiersza poleceń Dism .Z różnych forów internetowych przygotowałem następującą procedurę naprawy:
MediaCreationTool.exe
doc:\temp\windows.iso
c:\temp\windows.iso
do folderuc:\temp\windows
Konwertuj
install.esd
nainstall.wim
Sprawdź indeks i wersję systemu Windows w indeksie
.wim
pliku-
służy do następnego polecenia Dism w parametrze/Source:wim:path_to_wim:[index]
Przywróć składniki systemu Windows z pobranego i przekonwertowanego obrazu systemu Windows (wim):
Napraw uszkodzone pliki:
Naprawi uszkodzone pliki - komunikat o powodzeniu:
Windows Resource Protection found corrupt files and successfully repaired them.
Sprawdź ponownie pliki systemowe, aby upewnić się, że naprawa zakończyła się powodzeniem:
Komunikat o powodzeniu po skanowaniu:
Windows Resource Protection did not find any integrity violations.
źródło
ESD nie jest „zaszyfrowanym” WIM, jest to WIM, który został bardzo upakowany / ponownie zakodowany bardzo różnie (o bardziej złożonej strukturze).
WIM jest po prostu „szybki” skompresowany przez niezniszczalne jednostki 4KB lub 16KB, przy użyciu szybkiej kompresji Huffmanna. ESD wykorzystuje bardziej zaawansowaną kompresję opartą na LZ bez ograniczeń wielkości bloku. Ta kompresja nie pozwala na otwarcie obrazu w trybie do odczytu i zapisu, ponieważ kompresja jest globalna (każdy plik w archiwum nie jest już osobno kompresowany, wiele plików logicznych może współdzielić faktyczne miejsce przechowywania segmentów, aby osiągnąć wyższą kompresję poziom, zwłaszcza gdy istnieje wiele małych plików ze wspólnymi częściami nagłówków, takimi jak zbiory ikon lub części ich danych podpisu cyfrowego, informacje o prawach autorskich, nagłówki HTML, osadzone skrypty i tak dalej).
SWM to wieloczęściowy WIM, który został podzielony na wiele plików o mniejszych rozmiarach z (przybliżonym) maksymalnym rozmiarem, ale nadal jest zapisywalny i może być przechowywany na wielu dyskach DVD.
Dostawcy CBS zezwalają na kilka formatów archiwizacji, które mogą być obsługiwane przez DISM, w tym WIM, CAB, ZIP, VHD, VHDX, ISO wielu sesji ... Ale system Windows jest wyposażony w dwóch wbudowanych dostawców formatów WIM i ESD (ESD jest nowością w systemie Windows 10, w systemie Windows 8 obsługiwany był tylko format WIM, ale obrazy były większe)
Format ESD został dostrojony, aby umożliwić pełną wielojęzyczną dystrybucję systemu Windows 10 na jednym dysku DVD o pojemności mniejszej niż 3 GB ...
Możesz przekształcić ESD w WIM, ale wynikiem będzie znacznie większy plik. Możliwa jest również konwersja odwrotna (dzięki czemu można czytać i zapisywać w rozszerzonym WIM), aby spakować ją ponownie do nowego ESD. Dekompresowanie ESD do WIM jest względnie szybkie, ale kompresja WIM do ESD wymaga dużej ilości zasobów procesora i jest znacznie dłuższa (dlatego nie można odczytać-zapisać bezpośrednio do ESD, ale można to zrobić dość łatwo w WIM przy użyciu skromnego Użycie procesora).
Po „zamontowaniu” ESD za pomocą DISM, pierwszą rzeczą, którą zrobi, będzie rozszerzenie ESD do tymczasowego magazynu i działanie na nim tak, jakby to był WIM, aby można było aktualizować pliki w tym lokalnym magazynie. Odmontowanie będzie wymagało dwóch kroków: odtworzenia WIM (dość szybko), a następnie spakowanie go ponownie do ESD (bardzo wolno).
źródło
Rozwiązałem problem z opengl.dll w następujący sposób:
Zamontuj obraz systemu Windows 10.
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_3dae054 \ b569
sfc / scannow
Powodzenia!
źródło
Spędziłem kilka dni, idąc tymi ścieżkami i w końcu znalazłem rozwiązanie mojej sytuacji. Korzystam z systemu Windows 10 w wersji 1511 kompilacja 10586.545. Oto mój postęp:
Odtąd Windows Update znów zaczął działać.
Podsumowując, jeśli zmagasz się z tymi błędami i nic nie działa, spróbuj wyłączyć sterowniki NVIDIA GeForce, a następnie spróbuj wykonać niektóre z tych kroków (lub ręcznie skopiować w czystej wersji biblioteki DLL).
źródło
Z powodu braku lokalnej kopii i z osobnego powodu niemożności pobrania pliku ISO (ISO nie był typu Windows 10, który zainstalowałem) Jest tutaj rozwiązanie poprawki, z którego skorzystałem, polegające na pobraniu specjalistycznego pliku o nazwie „SFCFix „:
Należy pamiętać, że uruchomienie pliku SFCFix.exe bez pliku ZIP poprawki będzie długim powolnym procesem, który osiąga bardzo niewiele, należy go uruchomić metodą przeciągania / upuszczania pliku ZIP, a wynik jest prawie natychmiastowy.
źródło
Powinieneś być w stanie wykorzystać obraz esd, zgodnie z artykułem DISM technet. Obraz ESD (Electronic Software Delivery) to po prostu zaszyfrowana wersja WIM, a także wykorzystuje znacznie lepszy algorytm kompresji niż format WIM (ogólnie około 1,5x lepszej kompresji).
Jeśli masz tylko ESD, ale wolisz użyć WIM, możesz przekonwertować ESD na WIM za pomocą polecenia eksportu DISM. Możesz także przekonwertować WIM na ESD, określając / kompresuj: odzyskiwanie w ramach polecenia eksportu lub przechwytywania. Konwersja jednego na drugi wymaga dużych zasobów i dlatego zaleca się korzystanie ze skryptu ESD na WIM, który został napisany wiele lat temu i jest dostępny na forum MSFN. Korzystając ze skryptu, tylko ~ 50% zasobów systemowych jest przeznaczonych na eksport w porównaniu do 90% +, które są generalnie wykorzystywane do eksportu.
źródło
Właśnie poszedłem na inną maszynę Windows 10 Pro x64 i skopiowałem plik opencl.dll (z tego samego katalogu). Następnie przejąłem na własność zły opencl.dll, przemianowałem go na opencl.old i skopiowałem w nowym. Uruchom ponownie w trybie awaryjnym i uruchom sfc / scannow, a wszystko wróci do normy. W moim przypadku był to TYLKO zły plik wymieniony w cbs.log ... Widzę, gdzie lepiej byłoby mieć działanie sfc, jeśli masz wiele uszkodzonych plików i nie chcesz łatać każdego z nich osobno. Ale jeśli twoim problemem jest tylko jedna biblioteka dll, to prosta kopia wydaje się działać.
źródło
Wygląda na to, że obraz instalacyjny (
install.esd
) z nośnika instalacyjnego aktualizacji twórcy jest niezgodny z opisaną tutaj metodą DISM. Otrzymasz błąd0x800f081f
bez względu na to, jakiego rodzaju polecenie wpiszesz. Nie pomaga również wyodrębnić prawidłowegoinstall.wim
pliku ESD. Wreszcie próbowałem nawet zamontować plik WIM, ale bezskutecznie.Zobacz także dyskusje na https://www.sysnative.com/forums/windows-10-a/22564-dism-error-0x800f081f.html#post179723
Aktualizacja: utrzymujący się błąd nie ma nic wspólnego z poleceniem DIS ani plikami WIM. Wynika to z pakietu o nazwie Microsoft-Windows-TestRoot-and-FlightSigning-Package, dla którego nie są dostępne żadne działające źródła. Pliki znajdują się w C: \ Windows \ Servicing \ Packages i należy je stąd przenieść. Ponadto w rejestrze są dwa odniesienia, które należy usunąć. Szczegółowe informacje można znaleźć w połączonym wątku systemowym.
źródło