После очередной переустановки Windows 7 как всегда Центр обновления посыпал апдейтами. Все сразу почему-то устанавливать не удавалось, поэтому ставил частями. И вот после установки очередной пачки обновлений винда перезагрузилась, сообщив об успешной установке и сразу же выдала ошибку какого-то менеджера автозагрузки. Ну мало ли, всяко бывает, но когда я попробовал открыть Систему или хоть что-нибудь все время вылезала одна и та же ошибка 0xc0000005. Кое-как через Пуск я смог запустить Центр обновления, который как ни в чем ни бывало продолжил искать новые обновки. Ни один браузер также не запускался... кроме Windows Explorer (64 bit). Вот счастье-то! Вбил в поиск "после установки обновлений windows 7 перестали запускаться программы" и тут же вылезла страница с указание моей ошибки в заголовке. И тут выяснилось...
13 августа 2013 Microsoft выпустила обновление KB2859537, и форумы запестрели мольбами о помощи - у людей перестали запускаться программы. Сериал продолжился в сентябре и октябре… KB2859537 заменяет массу системных файлов, в том числе файлов ядра (полный список есть в статье базы знаний). Если оригинальное ядро было модифицировано, его замена может привести к проблемам. Обновление KB2872339, вышедшее в сентябре, заменяет KB2859537, т.е. содержит более новые версии файлов ядра. Его установка может привести к точно таким же проблемам. Обновление KB2882822, вышедшее в октябре, добавляет поддержку интерфейса ITraceRelogger. Поскольку оно заменяет файлы ядра, его установка может привести к точно таким же проблемам.
У такой модификации есть две наиболее вероятные причины:
- Вредоносные программы. Это не первый случай, когда обновление ядра выявляет наличие проблем в системе - так, 3.5 года назад случайно обнаружился руткит Alureon.
- Нелегальная активация. Проблема возникает из-за того, что во взломанных системах используется старая версия ntoskrnl.exe, которую патчер (или сборка) переименовывают в xNtKrnl.exe и прописывают в поле kernel через bcdedit. Это нужно для того, чтобы система работала с драйвером, эмулирующим SLIC-таблицу. Старая версия ядра не совместима с новыми файлами подсистемы Wow64, из-за этого в 64-битной системе 32-битные программы перестают запускаться. Вины Microsoft здесь нет, они просто не тестировали обновления на ломаных сборках. К слову, если пропатчить новую версию ядра, то система будет работать как положено - это означает, что обновление не нацелено на борьбу с пиратскими системами, просто так сложились звёзды.
Как исправить проблему
Удаление обновлений KB2882822, либо KB2859537 или KB2872339 из командной строки. В командной строке, запущенной с правами администратора, выполните:
wusa.exe /uninstall /kb:2882822
или
wusa.exe /uninstall /kb:2872339
или
wusa.exe /uninstall /kb:2859537
Откат к точке восстановления системы. Запустите
восстановление системы и откатитесь к точке до возникновения проблемы. Если не получается или система не загружается, войдите в среду восстановления Windows 7 или Windows 8 и выполните восстановление системы оттуда. И да, эта ситуацию действительно спасает откат.
Я не стал откатываться, а просто удалил два найденных обновления, KB2882822 и KB2872339 из командной строки. Другие способы описаны в
этой статье.