Внимание: Если у вас вышла из строя ОС, или тем более серверная ОС, прежде чем приступить к любым процедурам по восстановлению, сделайте резервную копию текущего состояния
Да, сделать бэкап неработоспособной системы.
Но, гипотетически, системы имеющей на текущий момент только одну проблему.
А сколько, в процессе восстановления, вы можете привнести неисправностей, в итак нерабочую систему, неизвестно никому. Так же как и не удастся проследить цепочку примененных вами действий в стрессовой ситуации.
Так что в первую очередь делаем бэкап, используя например Acronis True Image.
Занимаемся вредительством
Если у вас нет проблем с операционкой, но вы хотели бы поупражняться в восстановлении системных файлов, попробуйте выполнить следующее:
- Переходим в папку System32
cd C:\Windows\System32
По умолчанию владельцем файлов в папке System32 является служебный пользователь TrustedInstaller.
Что бы беспрепятственно удалить из системной папки любые(незадействованные в данный момент) файлы, вам нужно назначить себя владельцем и выдать своему пользователю полные права на файл.
- Владельца можно изменить как из GUI, так и через CMD:
# Назначаем себя владельцем takeown /f C:\windows\system32\WF.msc # Даем себе полные права на файл icacls C:\windows\system32\WF.msc /GRANT ADMINISTRATORS:F
- Удаляем файл
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