Windows 7 и бесконечный поиск обновлений

  • Автор:

windows7-stuck-checking-for-update-000.pngСлужба обновления Windows в современных реалиях относится к числу критически важных, поэтому неполадки с ней следует решать в первую очередь, ведь своевременное получение обновлений - это залог безопасности системы. Особенно это касается старых систем, которые просто в силу возраста могут иметь большее количество потенциально уязвимых служб и компонентов. Сегодня мы расскажем вам об одном интересном случае, когда Windows 7 полностью перестает искать и устанавливать обновления, точнее делает этот процесс бесконечным.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Судя по отзывам в сети интернет, появление данной неисправности совпало с переходом Windows 7 на новую систему обновлений, поэтому многие привычно винят в происходящем компанию Microsoft, а особо активные даже составляют списки "нерекомендуемых" обновлений, куда иногда попадает даже Convenience Rollup для Windows 7 (KB3125574). Такой подход вряд ли можно назвать разумным, так как на наш взгляд многие путают причину со следствием.

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

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

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

windows7-stuck-checking-for-update-001.pngЕсли скачать и попробовать установить обновления вручную, то получим аналогичную картину:

windows7-stuck-checking-for-update-002.pngНикакие наиболее очевидные способы исправления такого поведения системы, в том числе описанные на сайте Microsoft, успеха не принесли, поэтому мы взялись за подробное изучение логов системы, которые можно найти в директории C:\Windows\Logs\CBS. Довольно скоро стало понятно, что система не может завершить установку ряда обновлений, оставляя в логе следующие сообщения:

CBS    Appl: detectParent: package: Package_40_for_KB3210131~31bf3856ad364e35~amd64~~6.1.1.0, no parent found, go absent

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

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

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

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

windows7-stuck-checking-for-update-003.pngМеханизм данной проблемы очень схож с предыдущим, перед установкой обновлений система пытается закончить уже начатый процесс, но не может это сделать, так как пакет поврежден, исправить повреждение она также не может, поэтому снова все выливается в бесконечный цикл, только уже подготовки к установке.

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

Dism /Online /Cleanup-Image /ScanHealth

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

windows7-stuck-checking-for-update-004.pngПосле чего желательно удалить все содержимое папки C:\Windows\SoftwareDistribution\Download и перезагрузить систему.

windows7-stuck-checking-for-update-005.pngТеперь можем снова попробовать выполнить поиск и установку обновлений, все должно работать.

windows7-stuck-checking-for-update-006.pngКак видим, мы не только устранили проблему, но и разобрались в причинах ее возникновения, что гораздо более важно. Так как именно понимание происходящих в системе процессов дает необходимые знания и позволяет осмысленно подходить к процессам диагностики, в отличие от бездумного копирования найденных в интернете команд.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments