Восстановление хранилища компонентов в Windows 8

Возвращаясь к технологии хранилища компонентов (Component Store)в Windows 8 рассмотрим сценарии его восстановления. Напомним, что начиная с Windows Vista Microsoft ввела концепцию компонентного обслуживания ОС (component based servicing). Благодаря компонентной структуре удалось добиться создания более стабильной системы установки/удаления обновлений, патчей и пакетов обновлений SP. Эта же система лежит в основе архитектуры Windows 8. Файлы хранилища компонентов Windows на диске располагаются в каталоге \Windows\WinSxS, имеющего свойство со временем значительно разрастаться в размерах (подробнее о том, почему размер этого каталога со временем растет и как уменьшить размер папки WinSxS читайте в этой статье).

Однако в некоторых случая хранилище компонентов может повреждаться, что приводит к проблемам при установке обновлений Windows и другого ПО Microsoft. Для восстановления хранилища компонентов в предыдущих версиях Windows (Windows Vista, Windows 7, Windows Server 2008 /R2)  Microsoft разработала специальную утилиту — CheckSUR или System Update Readiness Tool (KB947821). Данная утилита является достаточно большой по размеру (более 350 Мб), и по мере выход новых обновлений Windows регулярно обновляется. Это означает, что каждый раз приходится выкачивать свежую версию CheckSUR.

Совет. В одной из предыдущих статей мы уже рассматривали пример использования CheckSUR для поиска и восстановления поврежденных компонентов: 0x800F0818 — ошибка при ролей в Windows Server 2008 R2.

Что же делает данная утилита? System Update Readiness Tool проверяет целостность следующих ресурсов:

    Файлы в каталогах:

  • %SYSTEMROOT%\Servicing\Packages
  • %SYSTEMROOT%\WinSxS\Manifests
    Содержимое веток реестра:

  • %SYSTEMROOT%\WinSxS\Manifests
  • HKEY_LOCAL_MACHINE\Schema
  • HKEY_LOCAL_MACHINE\Components
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing

В том случае, если утилитой CheckSUR будут обнаружены ошибки или несоответствия, она попытается их восстановить.

Проблемы с хранилищем компонентов могут вызывать различные ошибки при установке обновлений Windows. Ниже приведен список типовых кодов ошибок, которые данная утилита должна устранить.

Список ошибок WindowsUpdate, вызванных повреждением хранилища компонентов

Code Error Description
0×80070002ERROR_FILE_NOT_FOUNDThe system cannot find the file specified.
0x8007000DERROR_INVALID_DATAThe data is invalid.
0x800F081FCBS_E_SOURCE_MISSINGThe source for the package or file not found.
0×80073712ERROR_SXS_COMPONENT_STORE_CORRUPTThe component store is in an inconsistent state.
0x800736CCERROR_SXS_FILE_HASH_MISMATCHA component’s file does not match the verification information present in the component manifest.
0x800705B9ERROR_XML_PARSE_ERRORUnable to parse the requested XML data.
0×80070246ERROR_ILLEGAL_CHARACTERAn invalid character was encountered.
0x8007370DERROR_SXS_IDENTITY_PARSE_ERRORAn identity string is malformed.
0x8007370BERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAMEThe name of an attribute in an identity is not within the valid range.
0x8007370AERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUEThe value of an attribute in an identity is not within the valid range.
0×80070057ERROR_INVALID_PARAMETERThe parameter is incorrect.
0x800B0100TRUST_E_NOSIGNATURENo signature was present in the subject.
0×80092003CRYPT_E_FILE_ERRORAn error occurred while Windows Update reads or writes to a file.
0x800B0101CERT_E_EXPIREDA required certificate is not within its validity period when verifying against the current system clock or the time stamp in the signed file.
0x8007371BERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETEOne or more required members of the transaction are not present.
0×80070490ERROR_NOT_FOUNDWindows could not search for new updates.

В  Windows 8 и Windows Server 2012 функционал, аналогичный утилите CheckSUR, уже встроен в систему и называется Inbox Corruption Repair (встроенное восстановление компонентов). Встроенное восстановление компонентов может  работает в двух режимах:  фоновом и ручном. Фоновое восстановление автоматически запускается в случае появления ошибок при попытке установить обновление Windows Update. Windows в этом случае автоматически пытается исправить  поврежденный компонент и переустановить пакет Windows Update. В том случае, если автоматическое восстановление не может самостоятельно исправить проблему, администратор может исправить ошибки вручную, восстановив работоспособное состояния хранилища компонентов. Сделать это можно с помощью утилиты обслуживания образа DISM (команда Dism /Online /Cleanup-Image) или с помощью Powershell (командлет Repair-WindowsImage).

Чтобы проверить состояние хранилища компонентов, откройте командную строку с повышенными привилегиями и выполните:

Dism /Online /Cleanup-Image /CheckHealth

Советы.

  1. DISM в отличие от большинства утилит Windows чувствительна к регистру символов.
  2. Команда Dism /Cleanup-Image сохраняет логи в каталогах C:\Windows\Logs\CBS\CBS.log и C:\Windows\Logs\DISM\dism.log

Аналогичная команда Powershell:

Repair-WindowsImage -Online -CheckHealth

Восстановление хранилища компонентов (component store ) в windows 8

Проверка CheckHealth  займет несколько минут. Как вы видите, текущий статус хранилища компонентов в образе – Healthy (Здоровый), т.е. восстановление не требуется.

В том случае, если будут обнаружены какие-то проблемы или ошибки, следует  запустить процедуру восстановления хранилища командой:

Dism.exe /Online /Cleanup-Image /Restorehealth

Аналогичная Powershell команда:

Repair-WindowsImage -Online -RestoreHealth

В данном примере восстановление системных файлов прошло успешно:

The restore operation completed successfully. The component store corruption was repaired.

dism восстановление хранилища компонентов в windows 8

В том случае, если система самостоятельно не смогла восстановить некоторые компоненты в хранилище, вам может понадобится дистрибутив (установочный диск) Windows 8. Вставьте данный диск в привод или смонтируйте его iso образ. Допустим, диску с дистрибутивом назначена буква E. Получим список доступных версий Windows 8 на диске с помощью команды PoSH:

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

Список доступных образов в дистрибутиве Windows 8

В данном примере, мы видим, что на диске имеется только один образ (Windows 8 Pro) с индексом 1 (Index: 1).

Следующая команда запустит восстановление хранилища с восстановлением повреждённых компонентов из оригинального образа Windows 8:

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

, где 1 – индекс версии образа в дистрибутиве, полученный ранее.

После завершения восстановления удостоверьтесь, что хранилище компонентов находится в работоспособном состоянии (статус: Healthy)

Следующий (не всегда обязательный этап) – проверка целостности системных файлов с помощью команды:

sfc /scannow
Совет. Если к восстановлению хранилища компонентов вы прибегли из-за проблем с установкой обновлений Windows,  перезапустите службу Windows Update  и сбросьте локальных кэш обновлений. Для этого в командной строке последовательно выполните следующие команды:
net stop wuauserv

net stop bits

net stop cryptsvc

ren %systemroot%\SoftwareDistribution oldSD

ren %systemroot%\System32\catroot2 oldCat2

net start cryptsvc

net start bits

net start wuauserv

Предыдущая статья Следующая статья


Комментариев: 4 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)