Как восстановить компоненты windows. Использование опции RestoreHealth в DISM. Управление хранилищем компонентов

Прошу прощения за задержку в написании статей, дело заключалось в том, что переносил сайт на сервер.

Друзья, хочу помочь вам с проблемой, которая возникает при наборе команд для решения некоторых проблем в командной строке. Допустим, вы решили , то нужно ввести в командной строке с повышенными привилегиями следующую команду: «Dism.exe /Online /Cleanup-Image /StartComponentCleanup». По мгновенному окончанию процесса мы видим ошибку следующего типа:

Ошибка: 14098
Хранилище компонентов повреждено

В этой статье я попробую разобраться, что можно сделать.

Исправляем: «Ошибка 14098 хранилище компонентов повреждено»?

Думаю, многие из вас знают, какое предназначение несет папка WinSxS и зачем уменьшать ее объем, когда требуется.

Данная папка хранит некоторые системные компоненты Windows. Под компонентами понимаются файлы, нужные для восстановления системы, другими словами, туда помещаются актуальные копии Windows. Таким образом, со временем данная папка может разрастись до объема в несколько десятков Гигабайт. Конечно, пользователи сразу прибегают к действиям, а именно использование командной строки и шантанного инструмента «Очистка диска». Второй вариант помогает не всегда, поэтому в игру вступает командная строка. Когда вводим вот такую команду Dism.exe /Online /Cleanup-Image /StartComponentCleanup, очищающую папку WinSxS, может появиться ошибка Хранилище компонентов повреждено. Ошибка: 14098 . Уж простите, что повторяюсь, но перейдем теперь к делу.

Из названия понятно, что повреждено какое-то хранилище, которое, причём, можно восстановить таким образом:

Давайте сначала поверим целостность системных файлов с помощью команды:

DISM /Online /Cleanup-Image /ScanHealth

И да, не забудьте запустить CMD от имени администратора.


На выходе мы скорее всего увидим сообщение, что «хранилище компонентов подлежит восстановлению».

Тогда набираем эту команду:

DISM /Online /Cleanup-Image /RestoreHealth



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

Теперь перезагрузите компьютер, чтобы изменения вступили в силу, а после этого снова наберите команду для очищения папки WinSxS:

Dism.exe /Online /Cleanup-Image /StartComponentCleanup

Хочу заметить, что при восстановлении хранилища у вас обязательно должен быть доступ в интернет, так как необходимые файлы будут браться из Центра обновлений. Конечно, при отсутствии интернета тоже можно решить проблему, для этого понадобится установочный образ системы. Об этом в следующей статье.

Я уже давно не писал ничего, относящегося исключительно к Windows 7. Поводом для сегодняшний записи стал редчайший случай — Microsoft добавила новую возможность в старую ОС задним числом!

Читатели со стажем сразу вспомнят, как через четыре года после выхода Windows 7 в ней появилась возможность очищать папку WinSXS . Тогда из Windows 8+ перенесли часть функций DISM. Прошло два года, и в Windows 7 переселилась еще одна технология, связанная с хранилищем компонентов.

Сегодня в программе

Возвращаясь к напечатанному

Из нее вы узнаете:

  • основы системы обслуживания Windows
  • действия для восстановления компонентов в Windows 8+
  • разницу между старым CheckSUR в Windows 7 и встроенным восстановлением в Windows 8+

Что нового в Windows 7:)

Microsoft опубликовала статью базы знаний KB2966583 , из которой можно скачать пакет обновления. После его установки и перезагрузки Windows 7 получает фактически такую же возможность восстановления компонентов, как Windows 8+.

Как и в более новых ОС, восстановление реализовано с помощью DISM. Приведенная ниже команда запускает процесс проверки хранилища и восстановления поврежденных компонентов.

DISM /Online /Cleanup-Image /ScanHealth

Однако в Windows 7 есть ряд особенностей:

  • здесь нет ключей /CheckHealth и /RestoreHealth , и всю работу выполняет ключ /ScanHealth
  • команду можно выполнять только на работающей системе, т.е. восстановление отключенных образов не реализовано
  • появилась возможность проверки и восстановления компонентов Internet Explorer, которой не было в старом CheckSUR

Результат работы команды нужно смотреть в журнале, как и прежде сохраняемом по адресу \Windows\logs\CBS\checksur.log

================================= Checking System Update Readiness. Binary Version 6.1.7601.18489 2015-07-27 12:32 Checking Windows Servicing Packages Checking Package Manifests and Catalogs Checking Package Watchlist Checking Component Watchlist Checking Packages Checking Component Store Summary: Seconds executed: 149 No errors detected

У меня на ВМ повреждений не обнаружилось, но вы можете проверить у себя.

В статье базы знаний отдельно упоминается возможность создать запланированное задание для запуска команды. Однако учтите, что для запуска DISM нужны права администратора, т.е. задание не отработает под обычной учетной записью.

Дискуссия и опрос

Если у вас есть вопросы или комментарии по теме восстановления компонентов, не стесняйтесь озвучивать их в обсуждении. Пожалуйста, не публикуйте лог checksur в тексте комментария — есть PasteBin .

Впрочем, я думаю, что их будет немного, поэтому хочу развернуть дискуссию в другую плоскость. До официального выпуска Windows 10 осталась всего пара дней. Для инсайдеров и энтузиастов там никаких сюрпризов нет – мы следим за ходом разработки ОС уже восемь месяцев. Понятно, что практически все обладатели Windows 8.1 обновятся до Windows 10.

Поэтому меня особенно интересует, как много людей готовы перейти на Windows 10 с Windows7 и более ранних ОС.

Я уже проводил опрос на тему скорости обновления до Windows 10, но там не было расклада по вашей текущей системе, и сейчас мы его увидим. Если Windows 10 IP является вашей основной текущей системой, укажите ту, которая была установлена до нее.

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

Эта документация перемещена в архив и не поддерживается.

Управление хранилищем компонентов

Многие пользователи Windows задают вопрос: "Почему папка WinSxS такая большая?" Этот вопрос обсуждался в блогах, но в этом разделе рассматриваются дополнительные сведения о принципах, на которых основано хранилище компонентов (в частности, папка WinSxS), а затем даются ссылки на разделы, где описываются способы ограничения размера папки WinSxS.

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

Хранилище компонентов Windows и папка WinSxS

Папка WinSxS расположена в папке Windows, например: c:\Windows\WinSxS . Это расположение для файлов хранилища компонентов Windows. Хранилище компонентов Windows поддерживает выполнение функций, необходимых для настройки и обновления Windows. Вот несколько примеров использования файлов из хранилища компонентов Windows.

    Использование Центра обновления Windows для установки новых версий компонентов. Это обеспечивает защиту и актуальность систем.

    Включение и отключение компонентов Windows.

    Добавление ролей и компонентов с помощью диспетчера сервера.

    Перемещение систем между различными выпусками Windows.

    Восстановление системы после повреждения или неудачной загрузки.

    Удаление проблемных обновлений.

    Выполнение программ с использованием параллельных сборок.

Хранилище компонентов Windows впервые появилось в Windows XP для поддержки параллельных сборок. Начиная с Windows Vista хранилище компонентов было улучшено для отслеживания и обслуживания всех компонентов, составляющих операционную систему. Эти различные компоненты операционной системы отслеживают такие объекты, как файлы, каталоги, разделы реестра и службы. Конкретные версии компонентов часто объединяются в пакеты. Пакеты используются в Центре обновления Windows и программой DISM для обновления Windows. Компоненты и пакеты, используемые в процессе установки Windows, обрабатываются хранилищем компонентов Windows. Определение размера хранилища компонентов Windows усложняется тем, что многие используемые Windows файлы находятся в каталогах за пределами хранилища компонентов Windows с применением метода жесткой связи . В некоторых случаях файлы определенной версии компонента встречаются и в хранилище компонентов Windows, и вне его. С помощью жестких связей в Windows может создаться впечатление хранение нескольких копий одного файла без расхода фактического места на размещение нескольких копий.

Жесткие связи

Жесткая связь – это объект файловой системы, который позволяет двум файлам ссылаться на одно расположение на диске. Это значит, что несколько файлов могут ссылаться на одни и те же данные, а изменения этих данных в одном файле отражаются на других файлах. Это усложняет подсчет размера каталогов, как показано в следующем примере.

    Каталог А содержит три файла: 1.txt, 2.txt и 3.txt.

    Каталог Б содержит один файл: 4.txt.

    Файлы 1.txt и 2.txt соединены жесткой связью и содержат 1 МБ данных.

    Файлы 3.txt и 4.txt также соединены жесткой связью и содержат 2 МБ данных.

В этом примере видно, что жесткие связи позволяют нескольким файлам ссылаться на один набор данных.

Какой размер имеет каталог А?

Ответ зависит от того, что вы планируете делать с каталогом А.

    При считывании файлов в каталоге А размер всех считанных файлов будет суммой размеров каждого файла. В данном примере это будет 4 МБ.

    При копировании всех файлов из каталога А в новое расположение объем копируемых данных будет суммой всех данных, участвующих в жестких связях с файлами. В данном примере это будет 3 МБ.

    При освобождении места путем удаления каталога А размер будет уменьшен только на объем файлов, которые участвуют в жесткой связи только в каталоге А. В данном примере можно будет освободить 1 МБ.

Теперь вернемся к вопросу о том, сколько места занимает хранилище компонентов Windows, в частности папка WinSxS. Третий ответ в примере с каталогом А ближе всего подходит к оценке дополнительного занятого места. Файлы, жестко связанные с остальной системой, необходимы для системных операций, поэтому их не нужно считать, а для файлов, которые участвуют в жестких связях с несколькими расположениями в хранилище компонентов, следует учитывать только место, занятое на диске.

Возвращаясь к технологии хранилища компонентов (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 для поиска и восстановления поврежденных компонентов: .

Что же делает данная утилита? 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×80070002 ERROR_FILE_NOT_FOUND The system cannot find the file specified.
0x8007000D ERROR_INVALID_DATA The data is invalid.
0x800F081F CBS_E_SOURCE_MISSING The source for the package or file not found.
0×80073712 ERROR_SXS_COMPONENT_STORE_CORRUPT The component store is in an inconsistent state.
0x800736CC ERROR_SXS_FILE_HASH_MISMATCH A component’s file does not match the verification information present in the component manifest.
0x800705B9 ERROR_XML_PARSE_ERROR Unable to parse the requested XML data.
0×80070246 ERROR_ILLEGAL_CHARACTER An invalid character was encountered.
0x8007370D ERROR_SXS_IDENTITY_PARSE_ERROR An identity string is malformed.
0x8007370B ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME The name of an attribute in an identity is not within the valid range.
0x8007370A ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE The value of an attribute in an identity is not within the valid range.
0×80070057 ERROR_INVALID_PARAMETER The parameter is incorrect.
0x800B0100 TRUST_E_NOSIGNATURE No signature was present in the subject.
0×80092003 CRYPT_E_FILE_ERROR An error occurred while Windows Update reads or writes to a file.
0x800B0101 CERT_E_EXPIRED A required certificate is not within its validity period when verifying against the current system clock or the time stamp in the signed file.
0x8007371B ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE One or more required members of the transaction are not present.
0×80070490 ERROR_NOT_FOUND Windows 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

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

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

Dism.exe /Online /Cleanup-Image /Restorehealth

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

Repair-WindowsImage -Online -RestoreHealth

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

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

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

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

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

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

Repair-WindowsImage -Online -RestoreHealth -Source G:\sources\install.wim: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

Можно ли восстановить полностью разрушенное\удаленное хранилище, БЕЗ переустановки всей системы?

У клиента забился весь системный диск и показалось, что WinSxS занимает много места, и была удалена.
На самом деле, в свежи установленной Win10, удаление 5,5 ГБ WinSxS освобождает только ~380 МБ . Все остальное жесткие ссылки.
Что же тогда там храниться? і

Хотел восстановить путем установки с install.wim образа, и выбором "Обновить с сохранение файлов ", но далее предложение перезапустить комп и продолжить восстановленик. А что продолжать - точки возврата и образы системы не создавались.
Т.о. НЕТ возможности восстановить путем установки с диска ?

Тогда заменил весь WinSxS из boot.wim и Win10 нормально стал запускаться. Стало интересно, и проверил: в 32bit Win10 все запускается, но в 64bit Win10 системе не запускаются 32bit приложения.

Но надо все же восстановить хранилище полностью. Тогда наткнулся на ваш сайт.

Кстати, в восстанавливаемом мной Win10 вообще нет powershell ни в Поиске, ни в Пуск_Меню, ни в Панели_Управления, хотя есть директория \Program Files\WindowsPowerShell но там ничего не удалось запустить. Думал найти и установить powershel,l но потратив 30 минут находил только руководства, на чем и прекратил тратить время.

Тогда просто в окне Аднин.cmd вставил powershell и получил его. У вас пропущен этот простой способ открытия powershell

Пытался пока без успеха восстановить хранилище полностью, и в работающей системы с урезанным WinSxS:
------
>
>
Cистема DISM
Версия: 10.0.10240.16384
Версия образа: 10.0.10240.16384
[==========================100.0%==========================]
Ошибка: 0x800f081f
Не удалось найти исходные файлы.
Укажите расположение файлов, необходимых для восстановления компонента, с помощью параметра "Источник".
------

И в powershell
>

строка:1 знак:1
+ Repair-WindowsImage -Online -RestoreHealth
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

---------------
и с других работающих систем:

>

Repair-WindowsImage: Системе не удается найти указанный путь.
строка:1 знак:1
+ Repair-WindowsImage -Path e: -RestoreHealth -Source R:\sources\instal ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: NotSpecified: (:) , COMException
+ FullyQualifiedErrorId: Microsoft.Dism.Commands.RepairWindowsImageCommand

с тем же успехом. Может что не так делаю?

Читал выше о таких же отказах, и тоже хочется докопаться до истины. Для этого установил Win10 в 12ГБ vhd образ - одну копию запорю, берусь за другую.
Кстати, может посоветуете как и чем сравнить скорость системы с vhd образа и с диска.

Имею дело только с пиратками, но все описанное нормально проходило на других Win10. Даже например, с ru_windows_10_enterprise_2015_ltsb_x64 на вчера скачанную с центра обновления Win10ProRU и обратно. Т.ч. проблема не в пиратках, а где-то в нарушенных файлах идентификации.

И как все же правильно в таком случае: "ISO-образ винды задействуйте"?

P.S. После копирования в разрушенную Win10 всей WinSxS с установленного в vhd со вчера скачанного 64bit Win10 образа - все запускается и работает.
Но приведенные выше проверки НЕ работают .

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

C работающей или с другой ОС:
>sfc /scannow
>sfc /scannow /offbootdir=C:\w10\ /offwindir=E:\Windows
Защите ресурсов Windows не удается запустить службу восстановления .

>Dism /Online /Cleanup-Image /RestoreHealth
>Dism /Online /Cleanup-Image /RestoreHealth /Source:wim:R:\sources\install.wim:1 /limitaccess
>Repair-WindowsImage -Online -RestoreHealth
>Repair-WindowsImage -Path e: -RestoreHealth -Source R:\sources\install.wim -Debug -Verbose
>Repair-WindowsImage -Path e: -RestoreHealth -Source C:\w10\ -Debug -Verbose
ПОДРОБНО: Версия 10.0.0.0 командлетов PowerShell системы DISM
Repair-WindowsImage: Системе не удается найти указанный путь.
строка:1 знак:1
+ Repair-WindowsImage -Path e: -RestoreHealth -Source C:\w10\ -Debug -V ...

Других комбинаций пока не вижу.

Так можно ли восстановить разрушенное\удаленное хранилище или путем восстановления с диска установки, или командами?

И еще может знаете - для образа *.vhd, diskmgmt без выбора создает Block_size 2МВ, сектор 512, а BOOTICE.exe для *.vhd Block_size 2МВ, сектор 512 (или 4096), а для *.vhdx предлагает Block_size 32МВ, сектор 512 (или 4096).
С сектором понятно - на каждом файле теряется 1/2 размера сектора, но меньше секторов (больших) легче обрабатывать.
Но как влияет и какой оптимальный Block_size для образов под Windows-10 размером 10-25 ГБ?

Заранее благодарен за любую информацию.

P.S.S. При первой отправке у меня выдернулся сетевой кабель и отправка зависла. Вставил кабель, посмотрел - моего поста не было, Тогда повторил. А сейчас добавляю, и вижу 2 поста. Уберите пожалуйста первый.

После добавления полной WinSxS, powershell появился в Поиске