Восстановление хранилища компонентов при помощи средства проверки готовности системы к обновлению (SURT)

Метки:  , , , , , ,

Сегодня вашему вниманию предоставляется еще одно пополнение цикла статей о методах восстановления хранилища компонентов Windows. Помимо изобретения широкой общественностью бесчисленного множества "наколеночных" методик восстановления работоспособности компонентной модели, сами разработчики из Microsoft предлагают вполне официальные методы. В данной публикации мы рассмотрим один из подобных методов, который заключается в восстановлении хранилища компонентов при помощи средства проверки готовности системы к обновлению или, иными словами восстановлении хранилища компонентов при помощи SURT. Фактически описываемым методом предусматривается проверка каталогов/файлов компонентной модели при помощи специализированного пакета и попытка устранения найденных ошибок.

Метод подходит только для операционной системы Windows 7. Для более новых ОС (Windows 8+) средство SURT не требуется, поскольку весь функционал интегрирован в систему и доступен через API стека обслуживания, из скриптов Powershell и сервисной утилиты dism.exe. Это подтверждают высказывания некоторых сотрудников Microsoft: Instead of needing to download and run a separate tool, the diagnostic and repair functionality in the System Update Readiness Tool is now built into Windows in Windows 8 and Windows Server 2012.

Что же это за средство проверки готовности системы к обновлению?

Средство проверки готовности системы к обновлению (System Update Readiness Tool, SURT, CheckSUR) - утилита, поставляемая в виде пакета обновления (с целью включения эталонных файлов хранилища компонентов), предназначающаяся для устранения проблем хранилища компонентов Windows.

Представляет собой набор (базу) файлов компонентов, регулярно обновляемый (был, до некоторого времени) по мере выхода новых исправлений. Грубо говоря, утилита SURT это отличный способ для большинства пользователей проанализировать хранилище компонентов в собственной системе на разного рода повреждения, и иметь возможность устранить найденные повреждения в случае, если встроенная база имеет необходимые для восстановления файлы.

Первый запуск SURT

Для начала скачиваем пакет KB947821 для вашей версии и разрядности системы. Запускаем только что выкачанный пакет обновления с повышенными привилегиями.

surt

Поскольку SURT представляет собой утилиту, в процессе выполнения кода образа KB947821, он обнаруживает несоответствия (фактически ошибки) в хранилище пакетов и пытается исправить их, если находит соответствующие файлы для восстановления в собственной внутренней базе (полезной нагрузке пакета обновления).
После завершения процесса установки SURT в систему, появится сообщение Установка завершена, закрываем окно нажатием кнопки Закрыть. Результатом работы утилиты является файл отчета о проверке хранилища компонентов на наличие разного рода ошибок.

Анализ результатов

После окончания установки (статус: Установка завершена) проверяем лог-файл %Windir%\Logs\CBS\CheckSUR.log на предмет наличия записей об ошибках. На наличие проблем в хранилище компонентов обычно указывают сообщения о найденных ошибках (Found X errors) или недоступных файлов для восстановления (Unavailable repair files):

По изначальному замыслу разработчиков, средство SURT предназначалось для автоматического исправления найденных в хранилище компонентов ошибок, именно для этого в продукт поместили полный каталог эталонных файлов. Тем не менее, со временем ситуация изменилась:

..в последний раз SURT обновлялся в октябре 2014 года (о чем есть информация на странице загрузки Microsoft), а исправлений на операционную систему с того момента вышло довольно большое количество, соответственно многие файлы в каталоге средства попросту отсутствуют.

Вот именно поэтому, в случае обнаружения в лог-файле %Windir%\Logs\CBS\CheckSUR.log (битых) ненайденных файлов для восстановления, у нас имеется несколько вариантов решения.

Вариант решения 1

  • Проверяем результаты работы в файле %Windir%\Logs\CBS\CheckSUR.log. В зависимости от наименования проблемных файлов можно найти соответствующий пакет обновления. Например, в файле журнала вы можете обнаружить указанные ниже данные:

    Тут у нас все достаточно очевидно, поврежденный пакет в этом конкретном случае — KB3037574.

  • первый вариант: скачать аналогичные файлы с рабочей операционной системы аналогичной редакции/версии;
  • скачайте пакет обновлений, к которому принадлежит найденные файлы, из Центра загрузок Майкрософт или Центра обновления Майкрософт. Затем распакуйте из скачанного пакета обновления нормальные версии битых файлов.
  • Все найденные/распакованные, можно извлечь вручную из пакетов обновлений или попросту скопировать с рабочей системы аналогичной версии и редакции. После чего разместить файлы следующим образом:
    • *.mum- и *.cat-файлы из C:\Windows\servicing\Packages складываются в %Windir%\Temp\CheckSUR\servicing\packages;
    • *.manifest-файлы из C:\Windows\winsxs\Manifests складываются в %Windir%\Temp\CheckSUR\winsxs\manifests\;
  • Повторно запустить SURT;

Вариант решения 2

Этот вариант решения можно выделить в самостоятельный метод, поскольку применять его можно при любых сценариях повреждения компонентной модели. Да, решение неофициальное, не самое правильное, тем не менее, при отсутствии грамотной реализации компонентной модели Windows, вполне себя оправдывает, поскольку несколько раз показывало свою состоятельность.

Как мы помним, у компонентной модели Windows и часть, размещающаяся в реестре операционной системы.

  • запускаем редактор реестра regedit.exe;
  • перемещаемся в ветку HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages и для каждого найденного проблемного файла повторяем следующие шаги:
  • ищем интересующий нас подключ реестра (например, Package_for_KB3037574~31bf3856ad364e35~amd64~~6.1.1.0.mum);
  • меняем разрешения безопасности подключа: выделяем (ставим курсор) интересующую нас запись, нажимает правую кнопку мыши - пункт меню разрешения - выделяем курсором текущего пользователя - в нижней части окна ставим чекбокс напротив разрешения Полный доступ. Применяем изменения через кнопку OK;
  • выполняем удаление записи:

  • после удаления всех требуемых записей реестра, запускаем Центр обновления Windows и повторно инициируем поиск обновлений. После определения списка устанавливаемых обновлений, выполняем их установку. Проблемный пакет, в этом случае, должен быть повторно загружен и установлен.
  • после окончания процесса установки повторно запускаем SURT;

Вариант решения 3

Этот вариант заключается в ручном удалении проблемного пакета из командной строки.

  • По тем же логам вычисляем наименование пакета, в нашем случае это Package_for_KB3037574~31bf3856ad364e35~amd64~~6.1.1.0;
  • после этого пробуем удалить его при помощи утилиты dism:

    dism /Online /Remove-Package /PackageName:Package_for_KB3037574~31bf3856ad364e35~amd64~~6.1.1.0

  • Выполняем повторный запуск SURT;

Повторный запуск SURT

После выполнения действий, описанных в вариантах решений (выше), необходимо повторно произвести запуск средства проверки готовности системы к обновлению, используя уже скачанный файл обновления KB947821. При повторном запуске средство проверки готовности системы к обновлению сможет "подхватить" размещенные нами файлы из каталога %Windir%\Temp\CheckSUR и произвести восстановление хранилища компонентов. Если процедура восстановления завершилась успешно, то в лог-файле %Windir%\Logs\CBS\CheckSUR.log можно будет увидеть следующие записи:

Об успешном восстановлении хранилища компонентов при помощи средства проверки готовности системы к обновлению можно говорить в случае, когда в файле виден статус No errors detected.

Добавить комментарий

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