Windows Обзор утилиты sfc.exe

Может относиться для любой версии Windows

Переводчик Google

OKshef

Постоянный участник
Сообщения
247
Реакции
289
Скачать скрипт автоматической проверки целостности системных файлов можно тут:
Проверка целостности системных файлов утилитой sfc
==================================================

Утилита sfc.exe - предназначена для проверки всех версий защищенных системных файлов и восстановления их из специального кэша или дистрибутива в случае подмены или повреждения.
Запуск утилиты возможен только с правами администратора.


Для того, что бы запустить утилиту sfc.exe необходимо:
  • Для windows 7 и выше -запустить командную строку с правами администратора, введите команду
  • Для windows ХР-запустить командную строку ,введите команду
Например: sfc/scanboot

Синтаксис:​


sfc [/scannow] [/verifyonly] [/scanfile=<файл>] [/verifyfile=<файл>] [/offwindir=<автономная папка Windows> /offbootdir=<автономная папка загрузки> [/offlogfile=<путь к файлу журнала>]]

Параметры:​

/scannow - проверка целостности всех защищенных системных файлов и восстановление, по возможности, проблемных файлов.
/verifyonly - проверка целостности всех защищенных системных файлов. Восстановление файлов не выполняется.
/scanfile - проверка целостности указанного файла и его восстановление приобнаружении проблем. В параметре <файл> следует указать полный путь.
/verifyfile - проверка целостности файла, полный путь к которому указанв параметре <файл>. Восстановление файлов не выполняется.
/offbootdir - расположение автономного каталога загрузки для автономного восстановления.
/offwindir - расположение автономного каталога Windows для автономного восстановления./offlogfile Дополнительное включение ведения журнала с указанием пути к файлу журнала для автономного восстановления.

Рассмотрим практическое применение утилиты.

Повреждённые файлы

Например, на вашем компе отсутствуют некоторые шрифты(а это тоже системные файлы). Проверяем наличие системных файлов с помощью команды:
sfc.exe /scannow
Windows проверит и при необходимости переустановит недостающие или повреждённые файлы.


Примеры​

sfc /scannow
sfc /verifyfile=c:\windows\system32\kernel32.dll
sfc /scanfile=d:\windows\system32\kernel32.dll /offbootdir=d:\ /offwindir=d:\windows
sfc /scanfile=d:\windows\system32\kernel32.dll /offbootdir=d:\ /offwindir=d:\windows /offlogfile=c:\log.txt
sfc /verifyonly

Возможные результаты проверки​


Сообщение о результатах сканированияСоответствующее действие
Защита ресурсов Windows не обнаружила нарушений целостности.У вас нет отсутствующих или поврежденных системных файлов.
Защита ресурсов Windows не может выполнить запрошенную операцию.Чтобы устранить эту проблему, выполните проверку системных файлов в безопасном режиме.
Убедитесь, что папки PendingDeletes и PendingRenames находятся в папке %WinDir%\WinSxS\Temp.
Заполнитель %WinDir% представляет папку операционной системы Windows, например C:\Windows.
Защита ресурсов Windows обнаружила поврежденные файлы и успешно исправила их.Операция прошла успешно.
Подробные сведения о проверке и восстановлении системных файлов см. в статье Просмотр сведений о процессе проверки системных файлов.
Защита ресурсов Windows обнаружила поврежденные файлы, но не смогла исправить некоторые из них.Для восстановления поврежденных файлов вручную просмотрите подробные сведения процесса работы средства проверки системных файлов, чтобы найти поврежденный файл, а затем вручную заменить поврежденный файл гарантировано работоспособной копией.


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

Чтобы скопировать данные из журнала в текстовый файл на рабочем столе с использованием PowerShell, выполните следующие шаги:
  1. Откройте PowerShell с повышенными привилегиями.
    Для этого нажмите Win + X и выберите Windows PowerShell (Администратор) или Терминал Windows (Администратор).
  2. Введите следующую команду и нажмите Enter:
    PowerShell:
    Select-String -Path "$env:windir\Logs\CBS\CBS.log" -Pattern "\[SR\]" > "$env:userprofile\Desktop\sfcdetails.txt"
  3. Откройте файл Sfcdetails.txt на рабочем столе.
    Он будет содержать записи о каждом запуске средства проверки системных файлов (SFC), включая информацию о файлах, которые не удалось исправить.
Файл Sfcdetails.txt использует следующий формат:
Код:
2007-01-12 12:10:42, Info CSI 00000008 [SR] Не удается восстановить файл-член [l:34{17}]"Accessibility.dll" специальных возможностей, Version = 6.0.6000.16386, pA = PROCESSOR_ARCHITECTURE_MSIL (8), Culture neutral, VersionScope neutral, PublicKeyToken = {l:8 b:b03f5f7f11d50a3a}, Type neutral, TypeName neutral, PublicKey нейтрализуется в хранилище, файл отсутствует
Этот журнал позволяет выявить проблемные файлы, обнаруженные при последнем запуске средства проверки системных файлов.

Несколько дополнений:​

  • В Windows XP выполнение процедуры sfc выполняется либо с установленным в дисковод установочным диском Windows XP, либо с обязательным указанием папки с дистрибутивом Windows в ключе реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup параметр SourcePath, с указанием соответствующего пути.
  • Если в системе установлен SP выше, чем интегрированный в дистрибутив (например, ваш установочный диск содержит SP2, а в системе - SP3), то потребуется дистрибутив с более новым SP.
  • Если вы установили неизвестно-чью-сборку - готовьтесь к всевозможным сюрпризам, вплоть до отсутствия утилиты в системе.
  • Особенности работы средства проверки системных файлов (SFC.exe) в среде Windows RE
  • Из консоли восстановления XP sfc не запускается!

Ссылки по теме:​

1. Восстановление хранилища компонентов (WinSxS) Windows 10 и 11
2. DISM.exe - что это за зверь и с чем его едят?
3. Что такое система DISM?
 
Последнее редактирование модератором:
Добавлю немного информации.

Когда мы введем команду sfc/scannow в окно командной строки ,то увидим по завершению проверки нечто подобное этому сообщению:
Начато сканирование системы. Этот процесс может занять некоторое время.



Код:
Начало стадии проверки при сканировании системы.

Проверка 100% завершена.
Защита ресурсов Windows обнаружила поврежденные файлы, но не может восстановить некоторые из них.

Сведения см. в журнале CBS.log windir\Logs\CBS\CBS.log. Например: 

C:\Windows\Logs\CBS\CBS.log

А если юзер проворонил сообщение по окончании проверки?

Просим выслать файл:

C:\Windows\Logs\CBS\CBS.log

И мы вполне можем увидеть послание,оставленное нам утилитой sfc.exe о своей работе,просто распарсив данные из файла или посмотрев содержимое.
А если проверка не смогла восстановить все данные или вообще замерла на нескольких процентах?

Тогда меняем поврежденные файлы вручную!
Вот тут задержусь поподробнее.

В сети полно рекомендаций типа:
запускаем win+r (либо пуск-выполнить), далее вводим команду
Код:
findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log >%userprofile%\Desktop\sfcdetails.txt
после чего на рабочем столе появится файл sfcdetails.txt.

Ну с одной стороны верно,ведь файл CBS.log содержит много лишней информации.
И таким методом мы отсеиваем лишние записи.

Так же в логе CBS есть информация о том,какие файлы восстанавливались,какие параметры реестра изменялись и другое.

Все это можно отфильтровать изменив параметры команды findstr.


Прошу обратить внимание на то,что windows xp не поддерживает логирование и пытаться получить лог для хр бесполезно!!!
 
Последнее редактирование:
Для того, что бы максимально упростить процесс проверки я написал небольшой bat сценарий.

Посмотреть вложение Выполнить проверку sfc_scannow.rar

Все, что требуется-скачать,распаковать архив,запустить файл.
Все остальное будет сделано автоматически-утилита проверит системные файлы и восстановит поврежденные,сформирует на форум лог, который у вас запросили на рабочем столе.
Для тех,у кого windows xp-обязательно понадобится диск с дистрибутивом или образ смонтированный в привод.
поиск образа происходит автоматически,реестр самому править не надо.
 
Последнее редактирование:
В сети полно рекомендаций типа:
Цитата запускаем win+r (либо пуск-выполнить), далее вводим команду
Код:
findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log >%userprofile%\Desktop\sfcdetails.txt
после чего на рабочем столе появится файл sfcdetails.txt.
Koza Nozdri, нужно добавить, что создание sfcdetails.txt не поддерживается в ХР.
 
Саня имеет ввиду что создание CBS лога поддерживается только начиная с висты
 
Ребята,я для этого написал батник,он адекватно отрабатывает каждую ось.
На кибере я выложил дубль-дабы не провоцировать админа(скачать файл отсюда можно только при регистрации).
Просто дайте юзеру ссыль-пусть запускает и все.
http://www.cyberforum.ru/windows/thread628730.html#post4199903
Вот тут файл отжима лога и проверки для всех систем универсальный ,именно для кибера.
Запускать можно на всех системах не заморачиваясь
На выходных допишу батник-он будет создавать журнал и выдергивать результат проверки сфц,это замена лога для вин хр.


А то,что я забыл дописать в теме о том что хр не поддерживает данный лог-это да,извиняюсь)))

Добавлено через 3 минуты 25 секунд
Почему? Команда FINDSTR работает везде.
Функция логирования,как и папка logs присутствует в системах начиная с висты.

Кстати- если надо могу добавить в отдельный лог файлы,которые не восстановлены и отдельно то что восстановилось.
Если надо -говорите.
 
Последнее редактирование:
речь идет о ведении лога, а не запуске sfc

в случае с xp нужно добавить автоматическую проверку этих ключей:

[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup]

ServicePackSourcePath
Installation Sources
SourcePath

чтобы в параметрах были указаны пути к папке i386
 
Последнее редактирование:
Я понял.
Лог для хр доделаю-отпишусь.
 
а лучше так:

поиск папки i386
сравнение параметров ключей с путем к ней
автоматическое исправление с бекапом и ведением протокола
 
что пояснить?

ищешь папку, сравниваешь в этих ключах пути к ней (должны совпадать). если не совпадают - исправляешь. одновременно делая бекап и ведя протокол
 
у меня к вам вопрос по этому поводу. А если загрузиться удается только с LiveCD как запустить sfc.exe /scannow на диске С

можно ли?
 
vasilina, загрузись с дистрибутива в среду восстановления и там из консоли запусти sfc/scannow
ось какая?
 
Добавил в первый пост.
 
Получается если LiveCD на XP то из под него проверку нельзя запустить.
 
sfc /scannow /OFFBOOTDIR= буква:\ /OFFWINDIR=буква:\windows

glax24, на выходных планирую сделать автоматическую заменялку файлов -сфц на хп слишком привередлива
 
Последнее редактирование:
sfc /scannow /OFFBOOTDIR= буква:\ /OFFWINDIR=буква:\windows
Только у xp sfc таких параметров нет. И статья написана для Windows 7.
Код:
sfc /?

Проверка файлов Windows Microsoft(R) Windows XP, версия 5.1
(C) 1999-2000 Корпорация Майкрософт, все права защищены.

Проверка всех защищенных системных файлов и замена неправильных версий
правильными версиями.

SFC [/SCANNOW] [/SCANONCE] [/SCANBOOT] [/REVERT] [/PURGECACHE] [/CACHESIZE=x]


/SCANNOW      Немедленная проверка всех защищенных системных файлов
/SCANONCE     Разовая проверка при следующей загрузке
/SCANBOOT     Проверка всех защищенных системных файлов при каждой загрузке
/REVERT       Устанавливает исходные параметры по умолчанию.
/ENABLE       Включение нормальной работы защиты файлов Windows
/PURGECACHE   Очистка файлового кэша и немедленная проверка файлов
/CACHESIZE=x  Установка размера файлового кэша
 
Назад
Сверху Снизу