Odzyskiwanie magazynu składników w systemie Windows 8

Wracając do technologii Component Store w Windows 8, rozważymy scenariusze jej odzyskania. Przypomnijmy, że począwszy od systemu Windows Vista Microsoft wprowadził koncepcję obsługi opartej na składnikach. Dzięki strukturze komponentów możliwe było stworzenie bardziej stabilnego systemu do instalowania / odinstalowywania aktualizacji, poprawek i dodatków Service Pack SP. Ten sam system stanowi podstawę architektury systemu Windows 8. Pliki składowych systemu Windows na dysku znajdują się w katalogu \Windows\Winxx, który ma tę właściwość, że z czasem znacznie się powiększa (aby uzyskać więcej informacji na temat tego, dlaczego rozmiar tego katalogu rośnie w czasie i jak zmniejszyć rozmiar folderu WinSxS, przeczytaj ten artykuł).

Jednak w niektórych przypadkach magazyn składników może ulec uszkodzeniu, co prowadzi do problemów podczas instalowania aktualizacji systemu Windows i innego oprogramowania Microsoft. Microsoft opracował specjalne narzędzie do przywracania pamięci komponentów w poprzednich wersjach systemu Windows (Windows Vista, Windows 7, Windows Server 2008 / R2) - Checksur lub Narzędzie gotowości aktualizacji systemu (KB947821). To narzędzie ma dość duży rozmiar (ponad 350 MB), a wraz z udostępnieniem nowych aktualizacji systemu Windows jest regularnie aktualizowane. Oznacza to, że za każdym razem, gdy musisz wypompować nową wersję Checksur.

Wskazówka. W jednym z poprzednich artykułów przeanalizowaliśmy już przykład użycia CheckSUR do wyszukiwania i odzyskiwania uszkodzonych komponentów: 0x800F0818 - błąd podczas ról w systemie Windows Server 2008 R2.

Do czego służy to narzędzie? Narzędzie gotowości aktualizacji systemu sprawdza integralność następujących zasobów:

    Pliki w katalogach:

  • % SYSTEMROOT% \ Obsługa \ Pakiety
  • % SYSTEMROOT% \ WinSxS \ Manifests
    Zawartość gałęzi rejestru:

  • % SYSTEMROOT% \ WinSxS \ Manifests
  • HKEY_LOCAL_MACHINE \ Schemat
  • HKEY_LOCAL_MACHINE \ Components
  • HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Obsługa oparta na składnikach

W przypadku wykrycia błędów lub niespójności narzędzie CheckSUR spróbuje je naprawić.

Problemy z przechowywaniem składników mogą powodować różne błędy podczas instalowania aktualizacji systemu Windows. Poniżej znajduje się lista typowych kodów błędów, które to narzędzie powinno rozwiązać..

Lista błędów WindowsUpdate spowodowanych uszkodzeniem magazynu składników

KodBłądOpis
0 × 80070002ERROR_FILE_NOT_FOUNDSystem nie może znaleźć określonego pliku.
0x8007000DERROR_INVALID_DATADane są nieprawidłowe.
0x800F081FCBS_E_SOURCE_MISSINGNie znaleziono źródła pakietu lub pliku.
0 × 80073712ERROR_SXS_COMPONENT_STORE_CORRUPTMagazyn składników jest niespójny.
0x800736CCERROR_SXS_FILE_HASH_MISMATCHPlik komponentu nie pasuje do informacji weryfikacyjnych obecnych w manifestie komponentu.
0x800705B9ERROR_XML_PARSE_ERRORNie można przeanalizować żądanych danych XML.
0 × 80070246ERROR_ILLEGAL_CHARACTERNapotkano niepoprawny znak.
0x8007370DERROR_SXS_IDENTITY_PARSE_ERRORCiąg tożsamości jest zniekształcony.
0x8007370BERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAMENazwa atrybutu w tożsamości nie jest w prawidłowym zakresie.
0x8007370AERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUEWartość atrybutu w tożsamości nie mieści się w prawidłowym zakresie.
0 × 80070057ERROR_INVALID_PARAMETERParametr jest niepoprawny.
0x800B0100TRUST_E_NOSIGNATUREW temacie nie było podpisu.
0 × 80092,003CRYPT_E_FILE_ERRORWystąpił błąd podczas odczytu lub zapisu pliku w Windows Update.
0x800B0101CERT_E_EXPIREDWymagany certyfikat nie jest w okresie ważności podczas weryfikacji z bieżącym zegarem systemowym lub znacznikiem czasu w podpisanym pliku.
0x8007371BERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETECo najmniej jeden wymagany członek transakcji nie jest obecny.
0 × 80070490ERROR_NOT_FOUNDSystem Windows nie mógł wyszukać nowych aktualizacji.

W Windows 8 i Windows Server 2012 funkcjonalność podobna do CheckSUR jest już wbudowana w system i jest wywoływana Skrzynka odbiorcza Korupcja Naprawa (wbudowane odzyskiwanie komponentów). Wbudowane odzyskiwanie składników może działać w dwóch trybach:  tło i instrukcja obsługi. Odzyskiwanie w tle rozpoczyna się automatycznie, jeśli wystąpią błędy podczas próby zainstalowania Windows Update. Windows w tym przypadku automatycznie próbuje naprawić uszkodzony komponent i ponownie zainstalować pakiet Windows Update. W przypadku, gdy automatyczne odzyskiwanie nie jest w stanie samodzielnie rozwiązać problemu, administrator może naprawić błędy ręcznie, przywracając stan funkcjonalny magazynu składników. Możesz to zrobić za pomocą narzędzia DISM Image Maintenance Utility (polecenie Dism / Online / Cleanup-Image)lub przy użyciu programu PowerShell (cmdlet Napraw-WindowsImage).

Aby sprawdzić status składnicy, otwórz wiersz polecenia z podwyższonymi uprawnieniami i uruchom:

Dism / Online / Cleanup-Image / CheckHealth

Porady.

  1. DISM, w przeciwieństwie do większości narzędzi systemu Windows, rozróżnia małe i duże litery.
  2. Polecenie Dism / Cleanup-Image zapisuje dzienniki w katalogach C: \ Windows \ Logs \ CBS \ CBS.log i C: \ Windows \ Logs \ DISM \ dism.log

Podobne polecenie PowerShell:

Repair-WindowsImage -Online -CheckHealth

Weryfikacja CheckHealth zajmie kilka minut. Jak widać, bieżący stan przechowywania komponentów na obrazie to Zdrowy, tj. odzyskiwanie nie jest wymagane.

W przypadku znalezienia problemów lub błędów należy rozpocząć procedurę odzyskiwania pamięci za pomocą polecenia:

Dism.exe / Online / Cleanup-Image / Restorehealth

Podobne polecenie PowerShell:

Repair-WindowsImage -Online -RestoreHealth

W tym przykładzie odzyskiwanie pliku systemowego zakończyło się powodzeniem:

Operacja przywracania zakończyła się pomyślnie. Uszkodzenie magazynu komponentów zostało naprawione.

W przypadku, gdy sam system nie mógł odzyskać niektórych składników w pamięci, może być potrzebny zestaw dystrybucyjny (dysk instalacyjny) systemu Windows 8. Włóż ten dysk do napędu lub zamontuj jego obraz ISO. Załóżmy, że litera dysku ma przypisaną literę E. Uzyskaj listę dostępnych wersji systemu Windows 8 na dysku za pomocą polecenia PoSH:

Get-WindowsImage -ImagePath E: \ sources \ install.wim

W tym przykładzie widzimy, że na dysku jest tylko jeden obraz (Windows 8 Pro) z indeksem 1 (Indeks: 1).

Następujące polecenie rozpocznie odzyskiwanie pamięci z odzyskiem uszkodzonych komponentów z oryginalnego obrazu systemu Windows 8:

Repair-WindowsImage -Online -RestoreHealth -Source G: \ sources \ install.wim: 1

, gdzie 1 to indeks wersji obrazu w uzyskanym wcześniej rozkładzie.

Po zakończeniu odzyskiwania upewnij się, że magazyn składników jest w dobrym stanie (stan: Zdrowy)

Następnym (nie zawsze obowiązkowym krokiem) jest sprawdzenie integralności plików systemowych za pomocą polecenia:

sfc / scannow
Wskazówka. Jeśli próbowano odzyskać składnicę składników z powodu problemów z instalacją aktualizacji systemu Windows, uruchom ponownie usługę Windows Update i zresetuj lokalną pamięć podręczną aktualizacji. Aby to zrobić, w wierszu polecenia uruchom następujące polecenia:
Net Stop Wuauserv Net Stop Bity Net Stop Cryptsvc Ren% Systemroot% \ Dystrybucja oprogramowania OldSD Ren% Systemroot% \ System32 \ Catroot2 OldCat2 Net Start Cryptsvc Net Start Bity Net Start Wuauserv