Восстановление системных файлов Windows

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

Да, сделать бэкап неработоспособной системы.
Но, гипотетически, системы имеющей на текущий момент только одну проблему.
А сколько, в процессе восстановления, вы можете привнести неисправностей, в итак нерабочую систему, неизвестно никому. Так же как и не удастся проследить цепочку примененных вами действий в стрессовой ситуации.
Так что в первую очередь делаем бэкап, используя например Acronis True Image.

Занимаемся вредительством

Если у вас нет проблем с операционкой, но вы хотели бы поупражняться в восстановлении системных файлов, попробуйте выполнить следующее:

  1. Переходим в папку System32
    cd C:\Windows\System32

    По умолчанию владельцем файлов в папке System32 является служебный пользователь TrustedInstaller.

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

  1. Владельца можно изменить как из GUI, так и через CMD:
    # Назначаем себя владельцем
    takeown /f C:\windows\system32\WF.msc
    # Даем себе полные права на файл
    icacls C:\windows\system32\WF.msc /GRANT ADMINISTRATORS:F
  2. Удаляем файл
    del C:\windows\system32\WF.msc

Файл удалили. Теперь можно приступать собственно к восстановлению.

Восстановление в автоматическом режиме
SFC (System File Checker)

Пробуем выполнить команду

sfc \scannow

Дождитесь сообщения:
Программа защиты ресурсов windows обнаружила поврежденные файлы и успешно их восстановила

Так же можно запустить проверку только для одного конкретного файла:

sfc /scanfile=C:\windows\system32\WF.msc

Если команда не выполняется, и выдает ошибку на подобии:

Защита ресурсов Windows не может выполнить запрошенную операцию

то мы хотя бы может просмотреть какие файлы повреждены, вручную открыв лог последнего сканирования:
С:\Windows\Logs\CBS\CBS.log

Так же, для упрощения поиска ошибок в этом файле лога, можно воспользоваться следующей командой:

find "error" \Windows\Logs\CBS\CBS.log
Восстановление в ручном режиме

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

При выполнении команды sfc /scannow из CMD в рабочей системе некоторые файлы будут задействованы и поэтому не смогут быть обработаны. По этой причине лучше перейти в среду восстановления и предпринимать дальнейшие действия по восстановлению уже оттуда.

Для перехода к среде восстановления нужно:
1) Вставить диск\флешку с Windows той же версии, что и восстанавливаемая система
2) Выполнить перезагрузку
3) Запуститься с диска и открыть командную строку


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

wmic logicaldisk list brief

Конечно для этого можно использовать diskpart, но с wmi мы уложимся в меньшее количество команд.
Да и для общего развития с wmi полезно поработать.

Оффлайн восстановление системы

Если вы проводите восстановление из среды восстановления или LiveCD(USB)

sfc /scannow /offwindir=d:\windows /offbootdir=d:\

/offwindir — переключатель для восстановления файлов внешней системы. Нужен что бы указать расположение папки Windows

/offbootdir — переключатель должен указывать на загрузочный раздел

DISM

Утилита DISM поможет в некоторых случаях,  когда SFC не может восстановить системные файлы.

Ведь SFC должна откуда то брать восстанавливаемые файлы.
Таким местом является папка C:\Windows\WinSxS
Но если отсутствует или повреждено и это хранилище, то необходимо будет сначала восстановить его.

# Проверка целостности хранилища
dism /Online /Cleanup-Image /ScanHealth

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

# Заменить файлы на целостные, без проверки
dism /Online /Cleanup-Image /RestoreHealth

Если выполнить эту команду в среде окружения Windows, то недостающие файлы будут загружены из интернета или сервера WSUS.
В случае, если команда восстановления хранилища компонентов не работает, по той или иной причине,
нужно указать файл install.wim или install.esd со смонтированного ISO образа Windows

# Получить разрядность и версию системы, в которой мы работаем
wmic os get OSArchitecture,caption,Version /format:list
# Узнать индекс доступных ревизий в файле install.wim
dism /get-wiminfo /wimfile:P:\x64\sources\install.esd


На основе полученной информации указываем для утилиты DISM нужный индекс.

dism /Online /Cleanup-Image /RestoreHealth /Source:wim:P:\Source\Install.wim:4 /limitaccess

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

Ошибка 0x800f081f

При восстановлении вы можете столкнулся с ошибкой 0x800f081f

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

# Создаем каталог куда будут распакованы файлы из образа
mkdir C:\WIM
# Монтируем образ в папку
Dism /Mount-Wim /wimfile:P:\x64\sources\install.esd /index:4 /MountDir:G:\WIM /ReadOnly
# Восстанавливаем хранилище, используя распакованный образ
Dism /Online /Cleanup-Image /RestoreHealth /Source:C:\WIM\Windows /LimitAccess
# Демонтируем образ
Dism /Unmount-Wim /MountDir:C:\WIM /Discard
# Удаляем папку с файлами
rmdir C:\WIM
Восстановление хранилища на внешнем устройстве

Проверяем ревизию установленой системы

DISM /Image:D:\ /get-currentedition

Выполняем восстановление хранилища

dism /Image:D:\ /cleanup-image /restorehealth

или непосредственно указав источник

dism /Image:D:\ /wimfile:P:\x64\sources\install.esd /cleanup-image /restorehealth

После всех проделанных операций повторяем команду на восстановление системных файлов в надежде увидеть положительный результат:

sfc /scannow

Если в конце концов все это не помогло, то с большой вероятностью следующим вариантом будет переустановка ОС

Описание основных ключей, которые нам понадобятся

/Online — будут восстановлены файлы в папке WinSxS для системы из под которой запущена консоль CMD

/Cleanup-Image — Согласно Help: «Выполняет в образе операции очистки и восстановления». Но если по простому, то данный параметр нам необходим для того, что бы мы могли использовать зависимые от него параметры:
{/CheckHealth | /ScanHealth | /RestoreHealth}.
Т.о. если вызвать /RestoreHealth без /Cleanup-Image, мы просто увидим ошибку «Неизвестный параметр restorehealth»

/Image — параметр, указываемый при необходимости восстановить хранилище внешней системы. То есть расположенной на любом носителе.

/Source — если задан этот параметр, DISM сначала выполняет поиск в указанных расположениях.
Можно использовать несколько аргументов /Source

/LimitAccess — сообщает DISM, что не нужно выполнять поиск исходных файлов в Центре обновления Windows или в службах обновления Windows Server

Альтернативный вариант

Можно достать файлы из образа, без монтирования средствами DISM, с помощью 7Zip.
Используя полученные файлы, мы можем заменить ими содержимое папки WinSxS

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

Ваш адрес email не будет опубликован.