Особенности работы средства проверки системных файлов (SFC.exe) в среде Windows RE
Посетителей: 121067 | Просмотров: 165316 (сегодня 12)
Средство проверки системных файлов позволяет проверить версии всех защищенных файлов. Если при проверке системных файлов обнаруживается, что защищенный файл был изменен, то он заменяется его исходной версией.
SFC в среде Windows
Для выполнения подобной проверки в Windows достаточно запустить командную строку с правами администратора и выполнить:
Ниже приводится таблица с синтаксисом утилиты и с пояснением значений используемых ключей.
Таблица 1 — Синтаксис утилиты sfc.exe
SFC [/SCANNOW] [/VERIFYONLY] [/SCANFILE= ] [/VERIFYFILE= ]
SFC в среде Windows RE
Взяться за написание статьи подвигло непонятное поведение утилиты sfc. exe в среде Windows RE при загрузке с установочного диска или диска восстановления, а именно предложение перезагрузить систему и выполнить проверку еще раз.
Рисунок 1 – Запуск утилиты в среде восстановления без ключей и требование перезагрузки
Подобное поведение имеет вполне логичное объяснение: для среды Windows RE раздел диска, с находящейся на ней операционной системой, является автономным каталогом. Следовательно, запуск утилиты с ключами /OFFBOOTDIR и /OFFWINDIR обязателен. Дальше выясним значения этих ключей.
Расположение и буквы разделов в проводнике Windows или в оснастке управления дисками могут отличаться от букв, присвоенных разделам в среде восстановления. Обратите внимание, что на рисунках ниже раздел с системой имеет букву С.
Рисунок 2 – Раздел с системой в проводнике Windows
Рисунок 3 – Раздел с системой в оснастке «Управление дисками»
Вадим Стеркин предложил замечательный способ определения букв разделов в среде восстановления. Есть и другой — воспользоваться утилитой DISKPART. Загрузитесь в среду восстановления с установочного диска Windows, войдите в командную строку и выполните последовательно:
Комментарий к командам:
- Запуск DISKPART
- Вывод списка жестких дисков, установленных в компьютере с присвоенными им номерами. Нужный номер будет использован в следующей команде. Если диск один, то выполнять команду не нужно.
- Выделение для работы (передача фокуса) жесткому диску с разделом, на котором установлена система.
- Получение информации об имеющихся разделах на выбранном диске с указанием присвоенных им букв.
Рисунок 4 – Определение буквы системного раздела и выполнение проверки в среде Windows RE
Буква того раздела, на котором установлена Windows 7, нужна будет на следующем шаге. В нашем случае это буква Е (рис. 4).
Обязательно завершите работу с DISKPART:
Наконец, выполним проверку целостности системных файлов:
Первая команда задает расположение для файла журнала утилиты, который не создается автоматически в среде восстановления, а вторая — запускает сканирование. В значении обоих ключей второй команды используется одна и та же буква
Будьте внимательны! Если в синтаксисе команды или в определении буквы системного раздела будут допущены ошибки, проверка не сможет быть выполнена.
Большое спасибо моему коллеге Vancouver , модератору форума Windows 7, за помощь в подготовке этой статьи.
Проверка и восстановление целостности системных файлов Windows.
Утилита SFC.EXE ( S ystem F iles C hecker) существует во всех версиях Windows, начиная с Windows 2000, и предназначена для проверки состояния и восстановления системных файлов. Механизмы защиты важных файлов в разных версиях Windows реализованы по-разному, но все они учитывают тот факт, что какие-либо системные файлы (обычно исполняемые файлы .exe, файлы библиотек .dll, файлы драйверов) могут быть изменены сторонним программным обеспечением, и должен быть механизм, позволяющий проверить их целостность и отменить обнаруженные изменения.
Формат командной строки:
SFC [/SCANNOW] [/VERIFYONLY] [/SCANFILE=файл] [/VERIFYFILE=файл][/OFFWINDIR=автономная папка Windows /OFFBOOTDIR=автономная папка загрузки]
Параметры командной строки:
/SCANNOW — Проверка целостности всех защищенных системных файлов и восстановление, по возможности, проблемных файлов.
/VERIFYONLY — Проверка целостности всех защищенных системных файлов. Восстановление файлов не выполняется.
/SCANFILE — Проверка целостности указанного файла и его восстановление при обнаружении проблем. В параметре файл следует указать полный путь
/VERIFYFILE — Проверка целостности файла, полный путь к которому указан в параметре файл . Восстановление файлов не выполняется.
/OFFBOOTDIR — Расположение автономного каталога загрузки для автономного восстановления
/OFFWINDIR — Расположение автономного каталога Windows для автономного восстановления
Примеры использования команды SFC:
sfc /? — отобразить подсказку по использованию.
sfc /scannow — выполнить проверку целостности системных файлов и восстановить поврежденные. Результаты работы записываются в журнал утилиты \Windows\Logs\CBS\CBS.log.
sfc /verifyonly — выполнить только сканирование системных файлов без исправления.
sfc /VERIFYFILE=c:\windows\system32\cmd.exe — сканировать только файл cmd.exe
sfc /SCANFILE=d:\windows\system32\kernel32.dll /OFFBOOTDIR=d:\ /OFFWINDIR=d:\windows — сканировать только файл kernel32.dll из состава операционной системы, установленной на логическом диске D: . При выполнении сканирования файлов автономной Windows, ведение файла журнала в настоящее время не поддерживается.
В процессе выполнения программы, на экране отображается информация о ходе сканирования и результаты работы. Пример вывода при использовании сканирования с исправлением командой sfc /scannow :
Начато сканирование системы. Этот процесс может занять некоторое время.
Начало стадии проверки при сканировании системы.
Проверка 100% завершена.
Программа защиты ресурсов Windows обнаружила поврежденные файлы и успешно их восстановила. Подробные сведения см. в файле CBS.Log, который находится по следующему пути: windir\Logs\CBS\CBS.log. Например, C:\Windows\Logs\CBS\CBS.log. Обратите внимание, что ведение журнала в настоящее время не поддерживается для автономного обслуживания.
Начиная с Windows Vista, в качестве средства по обслуживанию компонент операционной системы используется Component-Based Servicing (CBS) — специальный набор программных средств для обеспечения ее целостности. CBS является частью Component Servicing Infrastructure (CSI) , обеспечивающей необходимые изменения текущего состояния Windows, например, при обновлении системы (Windows Update), установке или удалении программ и компонент, обновлении драйверов устройств и т.п. Фактически, CBS предоставляет программный интерфейс (API) инсталляторам для корректного изменения текущего состояния системы. Система обслуживания ОС Windows фиксирует множество событий, связанных с отслеживанием этого состояния, в специальном файле C:\Windows\Logs\CBS\CBS.log
Файл журнала CBS.log, кроме всего прочего, содержит и подробные сведения о ходе выполнения сканирования утилиты sfc.exe и его результатах. Для каждого сканируемого файла записывается дата, время и дополнительные сведения о проверке. Через каждые 100 проверок отображается итоговая информация, сопровождаемая тегом [SR] , что позволяет выделить из довольно объемного текста только те записи, которые содержат данный признак, с использованием команды поиска строки в текстовом файле findstr :
findstr /c:»[SR]» %windir%\logs\cbs\cbs.log >sfcdetails.txt — найти строки, содержащие [SR] и вывести их в файл sfcdetails.txt текущего каталога.
Пример содержимого файла журнала, содержащего только строки с тегом [SR] :
00004b78 [SR] Verifying 100 (0x0000000000000064) components
00004b79 [SR] Beginning Verify and Repair transaction
00004be0 [SR] Verify complete
00004be1 [SR] Verifying 100 (0x0000000000000064) components
00004be2 [SR] Beginning Verify and Repair transaction
00004c30 [SR] Repairing corrupted file «\??\C:\WINDOWS\System32\cmd.exe» from store
00004c5a [SR] Verify complete
. . . .
00005594 [SR] Committing transaction
00005599 [SR] Verify and Repair Transaction completed. All files and registry keys listed
in this transaction have been successfully repaired
В данном примере, проверено 100 файлов, в которых не обнаружено никаких отклонений, а в следующей порции был обнаружен и успешно исправлен файл msprivs.dll.mui . Последние 2 строки сообщают о завершении работы, и о том, что все файлы и ключи реестра были успешно восстановлены.
В тех случаях, когда не удалось восстановить поврежденный файл, в журнале будет присутствовать строка, содержащая:
Cannot repair member file Имя Файла Детальная информация о файле
Причиной невозможности восстановления файлов может быть неисправность оборудования, нарушение целостности файловой системы, повреждение хранилища эталонных файлов и т.п. В большинстве случаев, кроме неисправности оборудования, зная имя поврежденного файла, можно выполнить восстановление с использованием копирования из дистрибутива или каталогов аналогичной операционной системы.
Для поиска информации в тексте журналов cbs.log удобно фильтровать записи по характерным признакам событий, зафиксированных в журнале:
findstr /c:»Cannot repair» %windir%\logs\cbs\cbs.log >sfcnotrepair.txt — записывать в текстовый файл sfcnotrepair.txt только те строки журнала cbs.log , которые содержат строку Cannot repair , т.е. на выходе мы получим перечень системных файлов, которые не удалось восстановить.
findstr /c:»succsessfylly repaired» %windir%\logs\cbs\cbs.log >sfcnotrepair.txt — записывать в текстовый файл sfcnotrepair.txt только те строки журнала cbs.log , которые содержат строку succsessfylly repaired , т.е. на выходе мы получим перечень системных файлов, которые удалось восстановить.
В каталоге \Windows\Logs\CBS\ кроме текущего файла журнала cbs.log могут храниться устаревшие копии журналов в виде сжатых файлов с именем CbsPersist_ГГГГММДДnnnnnn.cab , которые, при необходимости можно распаковать для дальнейшего углубленного анализа.
В среде Windows 8-10 для восстановления системных компонент Windows, возможно использование утилиты Dism.exe , поддерживающей (чего не было в Windows Vista/Windows 7) параметр RestoreHealth :
dism /Online /Cleanup-Image /RestoreHealth — для восстановления системных файлов текущей ОС Windows.
Для Windows 7 параметр /RestoreHealth неприменим и функции восстановления объединены с функциями сканирования, задаваемыми параметром /ScanHealth :
dism /Online /Cleanup-Image /ScanHealth — для восстановления системных файлов текущей ОС Windows 7.
Если вы желаете поделиться ссылкой на эту страницу в своей социальной сети, пользуйтесь кнопкой «Поделиться»
sfc.exe
Утилита sfc.exe проверяет целостность всех системных файлов, защищенных системой защиты файлов Windows (wfp), в нее встроена возможность автоматической замены поврежденных версий корректными версиями Microsoft. Для запуска программы пользователь должен иметь права Администратора .
Содержание
Применение
Аргументы заключенные в квадратные скобки [ ] не обязательные параметры
Описание
При запуске sfc использует ряд флагов, самый используемый из которых это /scannow . sfc можно запустить на всех компьютерах под управлением Windows, а также в консоли восстановления Windows, но стоит учесть что все флаги поддерживаются во всех операционных системах. Подробнее в графе Совместимость.
Выводит список всех имеющихся флагов
Проверяет целостность всех защищенных системных файлов и восстанавливает поврежденные или измененные файлы сразу после выполнения команды. Эти файлы будут восстановлены в их значения по умолчанию.
Проверяет целостность всех защищенных системных файлов, но не восстанавливает их.
Сканирует целостность указанного файла (по абсолютному пути filePath ) и восстанавливает его если выявлены изменения. Пример абсолютного пути, когда вместо filePath будет c:\windows\system32\example.dll
Сканирует целостность указанного файла (по абсолютному пути filePath ) но не и восстанавливает его. Пример абсолютного пути, когда вместо filePath будет c:\windows\system32\example.dll
Необходим чтобы вручную указать диск на который установлена Windows и на котором мы ищем изменение файлов.
Задает букву диска с которого берутся файлы для восстановления. Он используется совместно с /offwindir = в консоли восстановления. Пример использования в консоли: sfc /scannow /offbootdir=d:\ /offwindir=d:\windows . В указанном примере сканируются и ремонтируются файлы, указанные флагом offwindir с использованием оригинальных файлов Microsoft найденных в пути offbootdir .
Сканировать и восстанавливать файлы при следующей загрузке Windows
Сканировать и восстанавливать файлы при каждой загрузке Windows
Эта команда используется для отмены ранее выполненных команд. Например, если пользователь выполнил команду /scanboot , которая запускает сканирование при каждой загрузке Windows, то команда /revert прекратит этот процесс.
Удаление исходных файлов (по которым происходит восстановление) из папки кэша Windows. Нужно пользоваться этой командой с осторожностью, поскольку может привести к сбоям системы. Команда также запускает сканирование системы и заполняет папку кэша копиями текущих файлов системы.
Изменяет размер кэша, под потребности пользователя. Параметр x задает количество мегабайт.
Коды возврата
Возвращает 0 если операция выполнена успешно и 0 если с ошибками.
Пример использования
Чтобы немедленно просканировать и восстановить поврежденные системные файлы:
Чтобы проверить целостность файла без его исправления
Проверить файл example.dll в консоли восстановления системы с установочного f: диска Windows
sfc /scanfile=d:\windows\system32\example.dll /offbootdir=f:\ /offwindir=d:\windows
Совместимость
Утилита sfc совместима с операционными системами Windows Vista и выше.
Возможные проблемы
- sfc scannow не удается запустить службу восстановления – Проверьте чтобы была запущена служба Установщик модулей Windows . (Панель управления\Администрирование\Службы) и тип запуска стоит Вручную
- sfc scannow не может восстановить файлы – Попробуйте выполнить следующую команду
Dism /Online /Cleanup-Image /RestoreHealth
Она используется для восстановления поврежденных компонентов, после чего перезагрузите компьютер и попробуйте выполнить sfc /scannow еще раз.
Второй вариант это заменить файлы, которые утилита не может восстановить самостоятельно либо с другого компьютера, либо с резервной копии и т.п.
Для этого нужно получить список файлов, которые утилита не смогла восстановить вводим: