Для проверки целостности системных файлов и восстановления поврежденных файлов (библиотек) компонентов в Windows (Windows Server) можно использовать команды SFC и DISM. Эти две утилиты могут быть крайне полезными, если операционная система Windows работает нестабильно, появляются ошибки при запуске стандартных приложений или служб, после вирусного заражения и т.д.
В этой статье мы рассмотрим, как использовать команды sfc /scannow , DISM /Online /Cleanup-Image /RestoreHealth или Repair-WindowsImage -Online -RestoreHealth для восстановления образа и системных фалов в Windows 10/11 и Windows Server 2022/2019/2016.
Ранее, мы уже в одной из заметок кратко расматривали основные способы проверки целостности системных файлов. В заметке, приведены саммые основные и часто срабатываемые способы. Однако, в сегодняшней заметке, расмортим более подробно каждый способ.
SFC /scannow: восстановление системных файлов Windows.
Перед тем, как восстанавливать образ Windows с помощью DISM, рекомендуется сначала попробовать проверить целостность системных файлов с помощью утилиты SFC (System File Checker). Команда sfc /scannow позволяет проверить целостность системных файлов Windows. Если какие-то системные файлы отсутствуют или повреждены, утилита SFC попробует восстановить их оригинальные копии из хранилища системных компонентов Windows (каталог C:\Windows\WinSxS).
Утилита SFC записывает все свои действия в лог-файл windir%\logs\cbs\cbs.log . Для всех записей, оставленных SFC в файле CBS.log проставлен тег [SR]. Чтобы выбрать из лога только записи, относящиеся к SFC, выполните команду:
findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log >"%userprofile%\Desktop\sfc.txt"
Если команда sfc /scannow возвращает ошибку “ Программа защиты ресурсов Windows обнаружила повреждённые файлы, но не может восстановить некоторые из них / Windows Resource Protection found corrupt files but was unable to fix some of them”, скорее всего утилита не смогла получить необходимые файла из хранилища компонентов (образа) Windows.
В этом случае вам нужно попробовать восстановить хранилище компонентов вашего образа Windows с помощью DISM.
После восстановления образа вы можете повторно использовать утилиту SFC для восстановления системных файлов.
Проверка целостности хранилища компонентов Windows с помощью DISM.
Утилита DISM (Deployment Image Servicing and Management) доступна во всех версиях Windows, начиная с Vista.
Для сканирования образа Windows на наличие ошибок и их исправления используется параметр DISM /Cleanup-image. Команды DISM нужно запускать из командной строки, с правами администратора.
Чтобы проверить наличие признака повреждения хранилища компонентов в образе Windows (флаг CBS), выполните команду (не применимо к Windows 7/Server 2008R2):
DISM /Online /Cleanup-Image /CheckHealthЭта команда не выполняет полное сканирование хранилища компонентов. Проверяются лишь записанные ранее маркеры повреждений и события в журнале Windows. Изменения в образ не вносятся. Команда проверит, не помечен ли ваш образ Windows как поврежденный и возможно ли исправить его.
В этом примере команда вернула, что с образом все хорошо:
No component store corruption detected.Чтобы выполнить полное сканирование хранилища компонентов на наличие повреждений в хранилище компонентов Windows, запустите команду:
The operation completed successfully.
DISM /Online /Cleanup-Image /ScanHealth
Команда проверки образа Windows может выполняться довольно долго (от 10 до 30 минут). И вернет один из трех результатов:
- No component store corruption detected – DISM не обнаружил повреждения в хранилище компонентов;
- The component store is repairable – DISM обнаружил ошибки в хранилище компонентов и может исправить их;
- The component store is not repairable – DISM не может исправить хранилище компонентов Windows (попробуйте использовать более новую версию DISM или вам придется восстанавливать образ Windows из резервной копии, сбрасывать или полностью переустанавливать вашу копию Windows.
В Windows 7 и Windows Server 2008 R2 для использования параметра DISM /ScanHealth нужно установить отдельное обновление KB2966583. Иначе при запуске DISM будет появляться “ Ошибка 87. Параметр ScanHealth не распознан в этом контексте”.
Команда DISM /ScanHealth может вернуть ошибки:
- Ошибка: 1726. Сбой при удалённом вызове процедуры;
- Ошибка: 1910. Не найден указанный источник экспорта объекта.
Это однозначно говорит о том, что ваш образ Windows поврежден и его нужно восстановить.
Восстановление образа Windows с помощью DISM /RestoreHealth.
Чтобы исправить повреждения в хранилище компонентов образа Windows нужно использовать опцию RestoreHealth команды DISM. Эта опция позволит исправить найденные в образе ошибки, автоматически скачать и заменить файлы повреждённых или отсутствующих компонентов эталонными версиями файлов из центра обновлений Windows (на компьютере должен быть доступ в Интернет). Выполните команду:
DISM /Online /Cleanup-Image /RestoreHealth
В Windows 7/2008 R2 эта команда выглядит по другому:
DISM.exe /Online /Cleanup-Image /ScanHealth
Процесс сканирования и восстановления компонентов может быть довольно длительным (30 минут или более). DISM автоматически загрузит недостающие или поврежденные файлы образа с серверов Windows Update.
Восстановление выполнено успешно. Операция успешно завершена.
The restore operation completed successfully.
DISM /Source: восстановление образа Windows с установочного диска.
Если на компьютере (сервере) отсутствует доступ в Интернет или отключена/повреждена служба Windows Update, то при восстановлении хранилища компонентов появятся ошибки:
- 0x800f0906 — Не удалось скачать исходные файлы. Укажите расположение файлов, необходимых для восстановления компонента, с помощью параметра Источник (0x800f0906 — The source files could not be downloaded. Use the source option to specify the location of the files that are required to restore the feature);
- Ошибка: 0x800f0950 — Сбой DISM. Операция не выполнена (0x800f0950 — DISM failed. No operation was performed);
- Ошибка:0x800F081F. Не удалось найти исходные файлы. Укажите расположение файлов, необходимых для восстановления компонента, с помощью параметра Источник (Error 0x800f081f, The source files could not be found. Use the «Source» option to specify the location of the files that are required to restore the feature).
Во всех этих случаях вы можете использовать альтернативные средства получения оригинальных файлов хранилища компонентов. Это может быть:
- Установочный диск/флешка/iso образ Windows
- Смонтированный файл wim
- Папка \sources\SxS с установочного диска
- Файл install.wim с установочным образом Windows
Вы можете указать WIM или ESD файл с оригинальным установочным образом Windows, который нужно использовать в качестве источника для восстановления файлов системы. Предположим, вы смонтировали установочный ISO образ Windows 11 в виртуальный привод D:.
Примечание. Для восстановления поврежденных файлов в хранилище компонентов из локального источника версия и редакция Windows в образе должна полностью совпадать с вашей.С помощью следующей PowerShell команды проверьте, какая версия Windows установлена на вашем компьютере:
Get-ComputerInfo |select WindowsProductName,WindowsEditionId,WindowsVersion, OSDisplayVersion
Выведите список доступных версий Windows в установочном образе:
Get-WindowsImage -ImagePath "D:\sources\install.wim"В нашем случае образ Windows 11 Pro в образе install.wim имеет ImageIndex = 6.
Для восстановления хранилища компонентов из локального WIM/ESD файла с блокированием доступа в интернет, выполните следующую команду (не забудьте указать ваш индекс версии Windows в файле):
DISM /online /cleanup-image /restorehealth /source:WIM:D:\sources\install.wim:6 /limitaccessИли:
DISM /online /cleanup-image /restorehealth /source:ESD:D:\sources\install.esd:6 /limitaccess
Если при запуске появляется
- Ошибка Error: 50: DISM does not support servicing Windows PE with the /Online option, значит ваша DISM считает, что вы используете WinPE образWindows. Чтобы исправить это, удалите ветку реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MiniNT.
- Ошибка DISM Error 87: проверьте правильно написания команды, убедитесь что вы используете версию DISM для вашей версии Windows (обычно бывает при загрузке через WinPE/WinRE).
Утилита DISM пишет подробный журнал сканирования и восстановления системных файлов в файл C:\Windows\Logs\DISM\dism.log.
После восстановления хранилища компонентов вы можете запустить утилиту проверки системных файлов sfc /scannow . Скорее всего она успешно восстановит поврежденные файлы:
Программа защиты ресурсов Windows обнаружила поврежденные файлы и успешно их восстановила.
Windows Resource Protection found corrupt files and successfully repaired them.
Если все системные файлы целы, появится сообщение:
Windows Resource Protection did not find any integrity violations
Восстановление образа Windows с помощью PowerShell
В версии PowerShell в Windows 10/11 и Windows Server 2022/2019 есть аналоги рассмотренных выше команд DISM. Для сканирования хранилища компонентов и поиска повреждений в образе выполните:
Repair-WindowsImage -Online –ScanHealthЕсли ошибок в хранилище компонентов не обнаружено, появится сообщение:
ImageHealth State: HealthyДля запуска восстановления системных компонентов и файлов наберите:
Repair-WindowsImage -Online -RestoreHealthПри отсутствии доступа к интернету эта команда может зависнуть в процессе восстановления образа. Вы можете восстановить системные компоненты из локальной копии образа Windows в виде WIM/ESD файла, скопированного с установочного ISO образа Windows 10 (здесь также нужно указать индекс версии Windows в wim файле в качестве источника восстановления):
Repair-WindowsImage -Online -RestoreHealth -Source D:\sources\install.wim:5 –LimitAccess
DISM: восстановление поврежденного хранилища компонентов, если Windows не загружается.
Если Windows не загружается корректно, вы можете выполнить проверку и исправление системных файлов в оффлайн режиме.
Если Windows не загружается после установки обновлений, сначала попробуйте удалить последние патчи.
- Для этого загрузите компьютер с установочного образа Windows (проще всего создать загрузочную USB флешку с Windows 10/11 с помощью Media Creation Tool) и на экране начала установки нажмите Shift + F10
- Чтобы разобраться с буквами дисков, назначенных в среде WinPE, выполните команду diskpart -> list vol (в моем примере диску, на котором установлена Windows присвоена буква C:\, эту букву я буду использовать в следующих командах);
- Проверим системные файлы и исправим поврежденные файлы командой: sfc /scannow /offbootdir=C:\ /offwindir=C:\Windows
- Для исправления хранилища компонентов используйте следующую команду (в качестве источника для восстановления компонентов мы используем WIM файл с установочным образом Windows 10, с которого мы загрузили компьютер):
Dism /image:C:\ /Cleanup-Image /RestoreHealth /Source:WIM:D:\sources\install.wim:6
- Если на целевом диске недостаточно места, то для извлечения временных файлов нам понадобится отдельный диск достаточного размера, например F:\, на котором нужно создать пустой каталог: mkdir f:\scratch и запустить восстановление хранилища компонентов командой:
Dism /image:C:\ /Cleanup-Image /RestoreHealth /Source:D:\sources\install.wim /ScratchDir:F:\scratch
Совет. Другие полезные команды DISM, которые должен знать администратор:
DISM /Add-Package – установка MSU/CAB файлов обновлений, интеграция обновлений в образ Windows;
DISM /Get-Drivers – получение списка установленных драйверов;
DISM /Add-Driver – добавление драйверов в образ;
DISM /Export-Driver – экспорт установленных драйверов Windows;
DISM /Add-Capability – установка дополнительных компонентов Windows через Features on Demand (например, RSAT, сервер OpenSSH или ssh клиент Windows;
DISM /Enable-Features и /Disable-Features – включение и отключение компонентов Windows (например, протокола SMBv1),
DISM /online /Cleanup-Image /StartComponentCleanup – очистка хранилища компонентов и удаление старых версий компонентов (папки WinSxS);
DISM /set-edition – конвертирование ознакомительной редакции Windows на полную без переустановки.