Ошибка 80070057 при обновлении на windows vista

Windows Vista

В преддверии поступления Windows 8 в продажу Microsoft выпустила большое кумулятивное обновление KB2756872, чего никогда раньше не делала для клиентских операционных систем. Однако при установке обновления меня ждал неприятный сюрприз — ошибка 80073712.

Восстановление компонентов Windows
Увеличить рисунок

Сегодня я расскажу о том, как победить эту и ряд других ошибок при установке обновлений Windows с помощью новой возможности обслуживания – встроенного восстановления компонентов (in-box corruption repair).

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

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

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

В справке предыдущих ОС Microsoft для ошибки 80073712 есть описание, из которого следует, что причиной является повреждение хранилища компонентов. Для Windows Vista и Windows 7 была выпущена утилита System Update Readiness Tool (CheckSUR), призванная устранить целый ряд ошибок Windows Update.

Список исправляемых ошибок

Для исправления этих ошибок в Windows 8 и более новых ОС утилита CheckSUR не нужна, потому что все необходимое уже встроено в систему! Вы можете восстановить поврежденные компоненты с помощью командлета PowerShell (рекомендуемый способ) или утилиты DISM.exe.

Upd. 28-Jul-2015. Microsoft выпустила специальное обновление, которое привносит в Windows 7 возможность встроенного восстановления компонентов по аналогии с Windows 8+.

Этап 1 – восстановление поврежденного хранилища компонентов

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

Восстановление без установочного диска

В этом случае используются файлы хранилища на локальном диске и Windows Update.

Запустите PowerShell от имени администратора и выполните команду:

Repair-WindowsImage -Online -RestoreHealth

Альтернативно, вы можете выполнить в командной строке, запущенной с правами администратора, команду:

Dism /Online /Cleanup-Image /RestoreHealth

Длительность процедуры восстановления зависит от конфигурации ПК и степени повреждения хранилища. У меня она заняла около 7 минут, а ее результат вы видите на рисунке ниже.

Восстановление компонентов Windows
Увеличить рисунок

Состояние хранилища компонентов обозначается параметром Image Health State. У него Healthy означает, что с хранилищем компонентов все нормально. Для дальнейшей диагностики переходите к проверке целостности системных файлов чуть ниже ↓ Если же повреждение хранилища не исправлено, нужно попробовать сделать это с помощью установочного диска.

Восстановление с помощью установочного диска

Когда системе не удается восстановить какие-либо компоненты, вам может помочь оригинальный установочный диск.

  1. Щелкните правой кнопкой мыши по ISO-образу и выберите в меню Подключить. Обратите внимание на букву диска, которую получил подключенный образ.
  2. В PowerShell выполните команду:
    Repair-WindowsImage -Online -RestoreHealth -Source Е:\sources\install.wim:1

    Здесь буква «E» соответствует букве подключенного образа, а цифра «1» — индексу издания в образе (в примере используется образ Windows 8 Enterprise с единственным изданием).

  3. По окончании процедуры убедитесь, что хранилище компонентов в порядке (Healthy).

Этап 2 – проверка целостности системных файлов

Строго говоря, этот этап не имеет отношения к восстановлению компонентов. Однако техническая поддержка Microsoft рекомендует после проверки целостности хранилища компонентов также проверить и целостность системных файлов. Для этого в командной строке, запущенной от имени администратора, выполните команду:

sfc /scannow

У меня один из файлов был поврежден, и утилита SFC успешно восстановила его.

Восстановление компонентов Windows
Увеличить рисунок

Случаи, когда системе не удалось восстановить какие-либо файлы, выходят за рамки этой статьи (я разберу их в другой раз).

Этап 3 – установка обновления

Итак, две команды восстановили целостность хранилища компонентов и системных файлов. Самое время попробовать установить обновление заново.

Восстановление компонентов Windows
Увеличить рисунок

Как видите, на сей раз у меня все сработало!

Что такое обслуживание Windows и зачем оно нужно

Рассказ вынесен в отдельную статью.

Преимущества встроенного восстановления компонентов Windows

Давайте сравним ключевые моменты восстановления компонентов в разных операционных системах.

Windows Vista и Windows 7

Утилита CheckSUR представляет собой набор полезных файлов, который регулярно обновляется по мере выхода новых исправлений. Таким образом, при возникновении проблем нужно скачивать утилиту заново, а между тем, сентябрьский пакет весит 350 Мб.

Но даже при таком размере в пакет не входят файлы для всех исправлений, выпущенных Microsoft (предположу, что файлов необязательных обновлений там нет). Это означает, что утилита не может устранить повреждения некоторых компонентов. И хотя обходной путь существует, он является костылем, требующим дополнительных телодвижений.

После запуска утилита распаковывает содержимое пакета в папку \Windows\CheckSUR\. Поскольку большинство файлов в пакете имеет очень небольшой размер, этот процесс получается длительным и занимает до 75-80% процентов от общего времени работы утилиты. Оставшееся время уходит на проверку компонентов и создание журнала.

И все это делается лишь ради того, чтобы восстановить манифесты и дать возможность системе обновиться…

Windows 8 и новее

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

Кроме того:

  1. Все необходимые компоненты автоматически загружаются с Windows Update. С одной стороны – это самый актуальный источник компонентов, а с другой —  от вас не требуется дополнительных действий.
  2. В дополнение к Windows Update или вместо него можно указать несколько источников компонентов, перечисляя WIM-образы в качестве параметров командной строки. Именно такой путь я описал выше для тех, кому не удастся обойтись только Windows Update. Например, если из г-сборки вырезаны необходимые компоненты, сочетание оригинального дистрибутива с Windows Update должно решить проблему.
  3. Windows периодически проверяет состояние компонентов в фоновом режиме и в случае неполадок помечает повреждение специальным флагом. Благодаря этому, с помощью консольных инструментов можно выполнить моментальную диагностику состояния хранилища компонентов.

Консольные средства для восстановления компонентов

Начиная с Windows 8, управление обслуживанием можно осуществлять не только с помощью утилиты DISM.exe, но и командлетов PowerShell, причем второй способ является рекомендуемым.

Я не любитель дублировать справку, но на русском языке ее пока нет. Поэтому я покажу вам основные возможности командлета Repair-WindowsImage, а для параметра Cleanup-Image утилиты DISM.exe ограничусь ссылкой на документацию.

Цель проверки (работающая система и образы)

Целью проверки может являться как установленная система, так и образ в формате WIM или VHD.

-Online

Проверяет работающую систему.

-Path

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

Проверка и восстановление хранилища

Для определения состояния и восстановления компонентов в командлете Repair-WindowsImage предусмотрены три параметра, выполняющих проверку хранилища. Результатом сканирования может быть:

  • отсутствие повреждений (Healthy)
  • наличие повреждений, которые можно восстановить (Repairable)
  • наличие повреждений, которые нельзя восстановить (Not repairable)

Однако функции параметров отличаются.

-CheckHealth

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

-ScanHealth

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

-RestoreHealth

Проверяет хранилище на предмет повреждений и выполняет их восстановление. Эта операция является самой длительной из трех.

Источник компонентов для восстановления

Чтобы восстановить компоненты, их нужно откуда-то взять. Когда источник не указан, при проверке автоматически используется локальное хранилище компонентов и Windows Update.

Этот момент нигде не задокументирован, и вы должны понимать, что при проверке автономного образа Windows из-под другого издания или версии Windows источник нужно указывать обязательно.

В обоих случаях вы можете указывать более одного источника и даже блокировать Windows Update при этом. Приведенные ниже параметры предназначены только для восстановления, и поэтому допустимы только в связке с -RestoreHealth.

-Source

В качестве источника можно использовать путь к:

  • работающей системе, к которой имеется доступ по сети
  • автономному образу, причем его предварительное подключение необязательно

Здесь любопытна возможность указать путь непосредственно к изданию в WIM-образе без его предварительного копирования на локальный диск и последующего подключения. Она является тайным знанием, пока не отраженным в документации ;) Это работает благодаря функции автоматического подключения WIM, реализованной на последних стадиях разработки Windows 8.

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

Когда в качестве источника используется WIM-образ, необходимо указать его индекс:

-Source C:\wim\install.wim:1

-LimitAccess

Блокирует доступ к Windows Update во время проверки.

Примеры команд PowerShell

Я приведу несколько примеров практического использования командлета Repair-WindowsImage с разными целями и источниками проверки. Первые два вы уже видели в начале статьи.

Восстановление хранилища работающей системы, используя локальные файлы и Windows Update в качестве источника:

Repair-WindowsImage -Online -RestoreHealth

Восстановление хранилища работающей системы, используя Windows Update и WIM-образ в качестве источников:

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

Проверка хранилища автономного VHD-образа. Сначала он подключается в папку C:\mount (это происходит очень быстро), а затем выполняется проверка.

Mount-Windowsimage -ImagePath C:\vhd\Win8.vhd -Index 1 -Path C:\mount
Repair-WindowsImage -Path C:\mount -ScanHealth

Восстановление хранилища автономного VHD-образа, используя в качестве источника WIM-образ. Сначала VHD подключается в папку, затем выполняется восстановление образа, после чего VHD отключается с сохранением изменений.

Mount-Windowsimage -ImagePath C:\vhd\Win8.vhd -Index 1 -Path C:\mount
Repair-WindowsImage -Path C:\mount -RestoreHealth -Source C:\wim\install.wim:1
Dismount-WindowsImage -path C:\mount -Save

Результаты проверки и восстановления

Помимо результатов в консоли вы можете найти подробный отчет ближе к концу файла %WinDir%\Logs\DISM\dism.log

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

Посмотреть отчет из журнала DISM

Как видите, у меня были повреждены 7 манифестов, относящихся языковому пакету, что и стало препятствием к установке обновления Windows. Все повреждения были исправлены.

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

Однако ошибки Windows Update, связанные с повреждением хранилища, вовсе не редкость, даже если судить только по форуму OSZone. Поэтому важно знать, как бороться с ними.

Мне показалось, что часть аудитории блога откровенно заскучала от серии статей о современном интерфейсе Windows 8 и приложений. Конечно, там все примитивно, никаких технических тонкостей, а главное – у некоторых людей создается ощущение, что кроме Modern UI в Windows 8 нет ничего нового. Это не так…

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

Вам хватило технических тонкостей сегодня? ;)

Если нет, в следующей записи из этой серии вас ждет не только экскурс в историю инструментов обслуживания ОС Microsoft, но и уникальная возможность попробовать себя в роли г-сборщика Windows! Но до этого в блоге появятся записи на другие темы.