- Восстановление хранилища компонентов
- Этапы восстановления хранилища компонентов
- Выводы
- Как при очистке папки WinSxS исправить ошибку «Хранилище компонентов повреждено» с кодом 14098
- Очищаем папку «WinSxS» в Windows 7
- Методы чистки «WinSxS»
- Установка обновления KB2852386
- Способ 1: «Командная строка»
- Способ 2: Графический интерфейс Windows
- Способ 3: Автоматическая чистка «WinSxS»
Восстановление хранилища компонентов
Поскольку в современных версиях операционной системы Windows (начиная с Vista) компонентная модель является одной из ключевых системных структур, обеспечивающих бесперебойную работу операционной системы, поддержание её в рабочем состоянии крайне критично для нормального функционирования исполнительной подсистемы Windows. Дело в том, что на протяжении жизненного цикла операционной системы, хранилище компонентов претерпевает постоянные изменения и время от времени может повреждаться. Основные причины рассогласованного состояния хранилища компонентов заключаются в том, что:
- в процессе обновления операционной системы могут повреждаться/удаляться файлы компонентов в местоположениях: %SYSTEMROOT%\Servicing\Packages и %SYSTEMROOT%\WinSxS ;
- в процессе обновления операционной системы могут повреждаться/удаляться ветви/ключи реестра по путям: HKLM\Components , HKLM\Schema и HKLM\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing ;
описанные причины могут быть следствием более глобальных сбоев:
- Ошибки при передаче файлов по сетевому интерфейсу;
- Ошибки дисковой/файловой подсистем;
- Аппаратные сбои: ошибки чтения/записи оперативной памяти, сбои в любых иных аппаратных компонентах;
- Ошибки в работе сторонних инструментов оптимизации: средства очистки реестра, оптимизации файловой системы, оптимизации хранилища компонентов, оптимизации каталога распространения и прч.
- Ошибки в коде модулей компонентов Центра обновления Windows;
Подобные дефекты хранилища компонентов WinSxS могут выявляться при попытках пользователя произвести обновление системы (например, через установку обновления безопасности):
Или же могут быть выявлены в процессе работы разнообразных диагностических и сервисных утилит (модули, входящие в состав Центра обновления Windows), о чем в лог-файлах нам красноречиво сигнализирует статус ERROR_SXS_COMPONENT_STORE_CORRUPT . Описанные выше проблемы впоследствии становятся причиной возникновения различного рода отказов установки обновлений. Чаще всего повреждаются *.cat , *.mum , *.manifest и *.dll -файлы. Все найденные методы восстановления хранилища компонентов я решил выделить в отдельные статьи, а тут попробовать организовать что-то вроде своеобразного хаба.
Этапы восстановления хранилища компонентов
Итак, для восстановления хранилища компонентов у нас в распоряжении имеется целая серия разнообразных методик. Рекомендуется выполнить в указанном порядке следующие действия:
- Запустить проверку целостности системных файлов командой: sfc /scannow . Если вдруг более подробно хотите изучить утилиту, то информация есть в статье про sfc
- Произвести восстановления хранилища компонентов:
- для Windows 8/10+ : Восстановление хранилища компонентов при помощи DISM
- для Windows Vista/7 : Восстановление хранилища компонентов при помощи SURT
- Запустить утилиту SFCFix : Восстановление хранилища компонентов при помощи SFCFix
- Выполнить синхронизацию оригинальных файлов с рабочими папками и пересоздание жёстких ссылок повторным запуском команды: sfс /scannow
- Если на каком-либо из предыдущих шагов восстановления (1-4) обнаружены поврежденные файлы, которые соответствующие утилиты не смогли автоматически восстановить, то необходимо провести поиск и анализ [оставшихся] ошибок в следующих файлах журналов:
- для Windows 8/10+ : %Windir%\Logs\CBS\CBS.log (при необходимости CbsPersist_*.cab ) и %Windir%\Logs\DISM\DISM.log
- для Windows Vista/7 : %Windir%\Logs\CBS\CBS.log (при необходимости CbsPersist_*.cab ) и %Windir%\Logs\CBS\CheckSUR.log (при необходимости CheckSUR.persist.log )
и уже с полученным списком поврежденных файлов [самостоятельно] произвести восстановление компонентов прямой заменой файлов
Ну и напоследок методики, напрямую не относящиеся к восстановлению хранилища компонентов, но позволяющие устранить некоторые ошибки, связанные с обновлениями:
Выводы
В общем случае, стратегия автоматического и ручного восстановления хранилища компонентов заключается в поэтапном выявлении поврежденных зависимостей, имен отсутствующих/поврежденных файлов и их планомерном восстановлении с использованием разнообразных методик. Иногда для проведения всех этих манипуляций в ручном режиме требуется довольно существенное время, поскольку чаще всего операции приходится повторять для каждого сбойного файла. Часто в этой кропотливой работе требуются еще и довольно хорошие знания устройства компонентной модели. Отдельно стоит отметить системы, представляющие собой «кастомные» любительские сборки, поскольку на них риск убить компонентную модель многократно повышается.
Теоретически, в самом крайнем случае, восстановление хранилища компонентов можно было бы провести путем переноса (с использованием LiveCD) с работоспособной машины (имеющей аналогичную версию операционной системы) следующих частей:
- Всех вложенных файлов/директорий в папке %WinDir%\WinSxS ;
- Всех вложенных файлов/директорий в папке %WinDir%\Servicing ;
- Все содержимое ветвей реестра: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing и HKEY_LOCAL_MACHINE\COMPONENTS ;
но на деле подобный глобальный поход может привести к падению системы в синий экран смерти, так что будьте предельно аккуратны!!
Как при очистке папки WinSxS исправить ошибку «Хранилище компонентов повреждено» с кодом 14098
Ш татная утилита Dism является очень полезным инструментом, позволяющим работать с образами Windows. Его возможности включают понижение и повышение релиза системы, интеграцию драйверов и компонентов, подготовка образом WinPE и многое другое. Применяется он также и для очистки чрезмерно разросшейся папки WinSxS — хранилища компонентов Windows, содержащего оригинальный файлы операционной системы, используемые для её восстановления.
Такая очистка производится командой Dism.exe /Online /Cleanup-Image /StartComponentCleanup , однако её выполнение не всегда бывает удачным.
В ряде случаев при выполнении команды всё завершается ошибкой с кодом 14098 «Хранилище компонентов повреждено» . Повторные попытки выполнить очистку приводят к тем же результатам. Нередко ошибки при выполнении разных команд могут повлиять и иные причины, но в этом случае её описание точно соответствует действительности.
Если Dism пишет, что хранилище компонентов повреждено, значит так оно и есть. К счастью, его можно довольно просто восстановить. Первым делом необходимо проверить целостность хранилища компонентов Windows 10.
Для этого в запущенной от имени администратора строке выполняем такую команду:
Dism /Online /Cleanup-Image /ScanHealth
Если хранилище повреждено, вы получите сообщение, что оно нуждается в восстановлении. Тут же, в командной строке выполняем следующую команду:
DISM /Online /Cleanup-Image /RestoreHealth
При этом будет запущена процедура восстановления хранилища оригинальных файлов Windows. По её завершении, если вы получите сообщение об успехе, закройте командную строку и перезагрузите компьютер. После этого очистку папки можно повторить и на этот раз всё должно пройти без ошибок.
Обратите внимание, что для успешного выполнение команды восстановления необходимо, чтобы компьютер был подключён к интернету , так как недостающие файлы утилита Dism будет получать через Центр обновления . Если подключение к глобальной сети отсутствует, для восстановления хранилища можно использовать установочный образ с Windows и консоль PowerShell , но это уже другая история.
Очищаем папку «WinSxS» в Windows 7
Одной из наиболее массивных папок в Windows 7, которая занимает значительное пространство на диске С, является системный каталог «WinSxS». Кроме того, у него имеется тенденция к постоянному росту. Поэтому у многих пользователей существует соблазн почистить эту директорию, чтобы освободить место на винчестере. Давайте разберемся, какие данные хранятся в «WinSxS» и можно ли чистить эту папку без негативных последствий для системы.
Методы чистки «WinSxS»
«WinSxS» — это системный каталог, содержимое которого в Виндовс 7 размещено по следующему пути:
В названном каталоге хранятся версии всех обновлений различных компонентов Виндовс, причем эти апдейты постоянно накапливаются, что и ведет к регулярному увеличению его размера. При различных сбоях в работе системы с помощью содержимого «WinSxS» производятся откаты до стабильного состояния ОС. Поэтому удалять или полностью очищать эту директорию категорически нельзя, так как при малейшем сбое вы рискуете в итоге получить мертвую систему. Но можно почистить в указанном каталоге некоторые компоненты, хотя и это Microsoft рекомендует делать только в крайнем случае, если вам критически не хватает места на диске. Поэтому советуем перед выполнением любых процедур, которые будут описаны ниже, сделать резервную копию ОС и сохранить её на отдельном носителе.
Установка обновления KB2852386
Нужно отметить, что в отличие от операционной системы Windows 8 и более поздних ОС, у «семерки» изначально не было встроенного инструмента для очистки папки «WinSxS», а применять ручное удаление, как говорилось уже выше, недопустимо. Но, к счастью, позже было выпущено обновление KB2852386, которое содержит в себе патч для утилиты Cleanmgr и помогает решить указанную проблему. Поэтому прежде всего нужно удостовериться, что это обновление установлено на вашем ПК либо инсталлировать его в случае отсутствия.
- Щелкайте «Пуск». Заходите в «Панель управления».
Жмите «Система и безопасность».
Переходите в «Центр обновлений Windows».
Открывается окно с перечнем установленных на компьютере обновлений. Нам нужно отыскать обновление KB2852386 в разделе «Microsoft Windows» данного списка.
Но проблема состоит в том, что элементов перечня может быть очень много, а поэтому вы рискуете потратить значительное время на поиск. Чтобы облегчить задачу, установите курсор в поле поиска, расположенное справа от адресной строки текущего окна. Вбейте туда следующее выражение:
После этого в списке должен остаться только элемент с указанным выше кодом. Если вы его видите, то все в порядке, нужный апдейт установлен и вы можете сразу переходить к способам очистки папки «WinSxS».
Если же элемент не отобразился в текущем окне, то это означает, что для достижения поставленных в данной статье целей вам следует выполнить процедуру обновления.
Вернитесь в «Центр обновления». Быстро это можно сделать, если вы действовали точно по описанному выше алгоритму, нажав стрелочку, направленную влево в верхней части текущего окна слева от адресной строки.
Для того чтобы удостовериться, что необходимый апдейт ваш компьютер увидит, щелкните по надписи «Поиск обновлений» в левой части окна. Особенно это важно, если у вас не включены автообновления.
Система выполнит поиск не установленных на ваш ПК апдейтов.
После завершения процедуры щелкните по надписи «Важных обновлений доступно».
Откроется список важных апдейтов, которые не установлены на вашем ПК. Вы можете выбрать, какие из них устанавливать, поставив слева от наименований пометки в чекбоксы. Поставьте флажок напротив наименования «Обновление для Windows 7 (KB2852386)». Далее жмите «OK».
Вернувшись в окно «Центра обновлений», жмите «Установить обновления».
Запустится процесс инсталляции выбранных апдейтов.
Далее мы рассмотрим различные способы очистки каталога «WinSxS» с помощью утилиты Cleanmgr.
Способ 1: «Командная строка»
Нужную нам процедуру можно выполнить с помощью «Командной строки», через которую производится запуск утилиты Cleanmgr.
Заходите в папку «Стандартные».
В перечне найдите «Командная строка». Жмите по наименованию правой кнопкой мышки (ПКМ). Выбирайте вариант «Запуск от имени администратора».
Производится активирование «Командной строки». Вбейте следующую команду:
Открывается окошко, где предлагается выбрать диск, в котором будет выполняться чистка. По умолчанию должен стоять раздел C. Его и оставляйте, если ваша операционная система имеет стандартное расположение. Если же она, по какой-либо причине, установлена на другом диске, то выберите его. Жмите «OK».
После этого утилита производит оценку объема места, которое она сможет очистить при проведении соответствующей операции. Это может занять определенное время, так что наберитесь терпения.
Откроется перечень объектов системы, которые подлежат очистке. Среди них обязательно найдите позицию «Очистка обновлений Windows» (либо «Файлы резервной копии пакета обновлений») и поставьте около него пометку. Именно данная позиция отвечает за очистку папки «WinSxS». Напротив остальных пунктов расставляйте флажки на свое усмотрение. Можете все другие пометки снять, если не желаете больше ничего чистить, или отметить те компоненты, где также хотите произвести удаление «мусора». После этого жмите «OK».
Внимание! В окне «Очистка диска» пункт «Очистка обновлений Windows» может отсутствовать. Это значит то, что в каталоге «WinSxS» нет элементов, которые можно было бы удалить без негативных последствий для системы.
Способ 2: Графический интерфейс Windows
Не каждому пользователю удобно запускать утилиты через «Командную строку». Большинство юзеров предпочитает это делать с помощью графического интерфейса ОС. Это вполне выполнимо и в отношении инструмента Cleanmgr. Данный способ, конечно, более понятен для простого пользователя, но, как вы увидите, займет большее по продолжительности время.
- Щелкайте «Пуск» и переходите по надписи «Компьютер».
В открывшемся окошке «Проводника» в перечне жестких накопителей отыщите наименование того раздела, где установлена текущая ОС Виндовс. В подавляющем большинстве случаев это диск C. Кликните по нему ПКМ. Выбирайте «Свойства».
В появившемся окошке жмите «Очистка диска».
Будет запущена точно такая же процедура оценки очищаемого пространства, которую мы видели при использовании предыдущего способа.
В открывшемся окошке не обращайте внимания на перечень подлежащих очистке элементов, а жмите «Очистить системные файлы».
Будет выполнена повторная оценка освобождаемого места на накопителе, но уже с учетом системных элементов.
Способ 3: Автоматическая чистка «WinSxS»
В Виндовс 8 существует возможность настройки расписания очистки папки «WinSxS» через «Планировщик заданий». В Windows 7 такая возможность, к сожалению, отсутствует. Тем не менее можно все-таки запланировать периодическую очистку через все ту же «Командную строку», хотя и без гибкой настройки расписания.
- Активируйте «Командную строку» с административными правами тем же методом, который был описан в Способе 1 данного руководства. Введите следующее выражение:
:: параметры очистки каталога winsxs
REG ADD «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Update Cleanup» /v StateFlags0088 /t REG_DWORD /d 2 /f
:: параметры очистки временных объектов
REG ADD «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Temporary Files» /v StateFlags0088 /t REG_DWORD /d 2 /f
:: генерация запланированной задачи «CleanupWinSxS»
schtasks /Create /TN CleanupWinSxS /RL Highest /SC monthly /TR «cleanmgr /sagerun:88»
Как видим, в Виндовс 7 можно очистить папку «WinSxS» как через «Командную строку», так и через графический интерфейс ОС. Также можно путем ввода команд произвести планирование периодического запуска данной процедуры. Но во всех перечисленных выше случаях операция будет выполняться с помощью утилиты Cleanmgr, специальный апдейт к которой в случае его отсутствия на ПК, нужно установить через стандартный алгоритм обновления Windows. Очень важно запомнить любому пользователю: производить чистку папки «WinSxS» вручную путем удаления файлов или с помощью сторонних программ категорически запрещается.