Компьютер76

РАБОТА С КОМПЬЮТЕРОМ СТАЛА ЛЕГЧЕ

Восстановление системных файлов: команда sfc /scannow.

ошибки в sfc scannow

Признаюсь, с этой статьёй немного запоздал (лет эдак на дцать, не менее), однако часто в других статьях я отсылаю читателей в никуда или в «общеподготовительные» мануалы по работе с этой полезной системной утилитой. Между тем она является одним из главных и первоначальнейших инструментов не только диагностики состояния системы, но и исправления ошибок в Windows. С появлением Windows 10/8 настольной версии этот инструмент дополнился ещё одним (причём предварительным: если у вас, к примеру, Window 10 — начните именно со средства проверки DISM ) вариантом сравнения имеющихся системных файлов с шаблонными, но, так как обладатели Windows 7 этого инструмента лишены… Знакомьтесь, кто ещё не в курсе: утилита sfc /scannow она же SFC.exe.

Что такое sfc /scannow?

Практически — это программа, которая, как и многие из других системных располагается в папке

C:\Windows\System32

и является неотъемлемой частью механизма защиты ресурсов Windows, который охраняет реестровые ключи и отдельные параметры от поражения (равно как и критически важные системные файлы). Если только после запуска утилиты та обнаружит изменения в этих файлах или параметрах, она приступит (по команде пользователю) к исправлению ситуации. Для этого сама Windows всегда держит кэшированную копию файлов в системной папке с одноимённым названием. Есть желание — взгляните:

C:\Windows\winsxs\Backup

System File Checker = Sfc.exe = sfc /scannow

Для запуска проверки системных файлов откройте cmd от имени админа:

cmd от имени администратора

В окне консоли пишем знакомую команду:

sfc /scannow

проверка файловой системы sfc /scannow

Утилита проверит нужное, в случае обнаружения несоответствия будет проведена подмена после перезагрузки. У SFC есть маленькие хитрости и скрытые нюансы. Любому из тех, кто прибегает к возможностям этого инструмента, следуют помнить, что если sfc не справилась сразу, не пренебрегите запустить её повторно. Но на этот раз отключите режим Быстрой загрузки. Оптимально количество попыток — 3. Только после трёх неудачных следует приступать к остальным средствам.

Ошибка утилиты Sfc.exe: Для завершения восстановления системы требуется перезагрузка…

Что sfc /scannow умеет?

Справка по утилите русифицирована, так что вам стоит лишь набрать:

sfc

справка по sfc scannow

Результаты проверки sfc /scannow

Результаты работы утилиты будут сопровождаться некоторыми сообщениями в зависимости от того, успешно ли прошло восстановление, или в работе произошёл сбой. Не торопитесь паниковать в случае неудачных выводов утилиты. Запустите sfc.exe несколько раз и в разных режимах.

  • Для завершения восстановления системы требуется перезагрузка. Перезапустите систему Windows и выполните sfc ещё раз:

Для завершения восстановления системы требуется перезагрузка

Окно означает, что в текущем сеансе окно консоли можно закрыть: утилита запустится только после ПЕРЕЗАГРУЗКИ ( после ВЫКЛЮЧЕНИЯ компьютера ситуация может повториться). Причина сообщения ясна — файлы кэша в данную минуту обрабатываются системой («заняты» каким-то процессом/ами: Windows элементарно ждёт применения только что установленных обновлений).

  • защита ресурсов не обнаружила нарушений целостности

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

  • Защита ресурсов Windows обнаружила поврежденные файлы и успешно их восстановила

Защита ресурсов Windows обнаружила поврежденные файлы и успешно их восстановила

Наиболее частое повреждение файлов — либо неправильная работа (а чаще удаление) сторонних программ в/из Windows, а также сбои в работе жёсткого диска (см. «Плохие секторы жёсткого диска«). И утилита частично эти проблема разрешила, подменив на исходные. Настоятельно рекомендую взглянуть на лог утилиты по адресу в консоли — там могут быть интересные детали для разрешения вероятных в последующем ошибок. Ищите теги [SR]

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

Чтобы вытащить из лога только ту информацию, что касается именно SFC, можно из консоли ввести команду

findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log >"%userprofile%\"Desktop"\sfc.txt"
  1. Защита ресурсов Windows обнаружила поврежденные файлы, но не может восстановить некоторые из них. При этом система отправляет вас в лог программы за подробностями. Речь идёт, как правило, о повреждении хранилища WinSxS. Реже, но также встречается ещё более категорическое 
  2. Защита ресурсов Windows не может выполнить запрошенную операцию.

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

Большинство пользователей подобное «заявление» ставит в тупик. Я могу предложить вам несколько вариантов действий:

  • Иногда камнем преткновения является аудио служба Windows, причём в Windows 10 это сплошь и рядом. Откройте консоль cmd от имени администратора и введите две последовательные команды:
sc config trustedinstaller start=auto
net start trustedinstaller
  • Сразу проверяем готовность соответствующей службы. Набираем (в строке Найти/Выполнить) команду на открытие консоли
services.msc

Ищем в списке служб Установщик модулей Windows. Тип запуска: Вручную.

  • Проверьте, на месте ли папки (и не пусты ли они) PendingDeletes и PendingRenames в директории

C:\Windows\WinSxS\Temp

папка temp в winsxs

Если результат окажется тем же, возможно попробовать сдвинуть запуск утилиты восстановления ещё ближе к запуску Windows: на этот раз sfc /scannow может проверить файлы ещё до загрузки системы. Для этого вам потребуется загрузочный носитель с ближайшей версией Windows, которая у вас установлена или, если раздел восстановления жив, можно обойтись и без флешки. В любом случае выходим на Восстановление системы и затем на командную строку (Shift + F10 при появлении окна с установкой при загрузке с флешки):

восстановление системы из загрузочного диска

восстановление системы установка windows

командная строка из загрузочного диска

командная строка windows 10

консоль cmd во время установки windows

  • запускаем diskpart и проверяем тома:
list vol

запуск dispart до запуска windows

  • фиксируем буквы разделов. Они наверняка поменялись. Нужны раздел Зарезервировано и системный раздел с самой Windows.
  • покидаем diskpart командой exit и  водим команду на офлайн проверку вашей Windows:
sfc /scannow /offbootdir=<буква-раздела-восстановления>:\ /offwindir=<буква-раздела-с-Windows >:\Windows

например

 sfc /scannow /offbootdir=E:\ /offwindir=C:\Windows

проверка sfc scannow с флешки

Учтите, что в режиме Windows PE некоторые привычные сообщения не появляются. Если начато сканирование системы, но полосы состояния прогресса нет, это не значит, что утилита зависла. Дайте ей время, а чуть погодя прервите паузу сочетанием Ctrl + C. Результат увидите или начните заново, отводя утилите ещё больше времени.

Читаем логи и проверяем подробности работы sfc

Путь расположения лог-файла sfc.exe вы уже знаете. Чтобы его не искать в терниях системы, по аналогии с официальной справкой по sfc.exe я предлагаю вам набрать такую команду в консоли от имени админа:

findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log >"%userprofile%\Desktop\справка.txt"

На Рабочем столе появится текстовый файл, в котором вы найдёте подробности того, с чем команда sfc /scannow столкнулась:

логи sfc

Большинство записей (а в «холостом» режиме работы утилиты) в логах должны выглядеть так:

как читать логи sfcSfc.exe традиционного проверяет файлы поблочно по 100 штук. Этих самых файлов немало, и потому строк в логах также много. Информация выводится по типу:

Дата   Время   Тип   Режим доступа   Подробности

А вот и проблема «…но не может восстановить некоторые из них«:

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

для увеличение изображения откройте его в новой вкладке

где самые частые содержания в строках такие:

  • beginning verifiyng … — проверка файлов в текущем блоке начата
  • cannot repaire member file… — не могу починить файл имя.расширение
  • file is missing — файл отсутствует
  • hash mismatch — хэш-код файла не соответствует системному («родному»)

  • this component was referenced by… — компонент изначально относился к… (на него ссылался…)

  • verifying 100 components — проверка 100 составляющих блока завершена успешно

  • repairing corrupted file — ремонт повреждённого файла

  • repair complete — ремонт закончен

Пробуем восстановить файл вручную.

Восстановление файлов из списка логов sfc вручную.

Напоминаю, что логи sfc содержат в себе только информацию о СИСТЕМНЫХ файлах: часто эта программа бесполезна против части подгружаемых со стороны библиотек DirectX, .Net и прочего. Исправит она и не все файлы для установленных программ, если такая беда случится. 

Но если логами sfc битый или пустой/отсутствующий файл зафиксирован, его можно исправить. Повторяю: если вы сидите в Windows 10, у вас есть более быстрый вариант. Тут же в cmd наберите:

dism /online /cleanup-image /restorehealth

В Windows 7 придётся попотеть. Сначала получите к нему доступ и права на работу с файлом:

takeown /f полный-путь-к-файлу/папке

и

icacls полный-путь-к-файлу/папке /GRANT Администраторы:F

Например, система обнаружила повреждение файла System.Management.Automation.dll и не смогла его починить.

повреждённый файл в логах sfc

откройте в новой вкладке

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

cd\
dir имя-файла /s

поиск повреждённого файла по имени

Консоль, скорее всего, выдаст несколько вариантов (заметьте, что нередко в Windows папка таковой не является — это может быть всего лишь системный узел или вид «с нескольких ракурсов»). Так что, опираясь на логи, откиньте ненужные результаты. Если всё ещё не удаётся его вычленить, используйте повторную проверку каждого из «подозреваемых» с помощью той же sfc.exe в формате (смотрите справку):

sfc /verifyfile=полный-путь-к-файлу

Остаётся обнаружить и заполучить искомый файл. Для того есть несколько способов:

  • взять у друга с такой же Windows (попросить на добропорядочном форуме)
  • скачать аккуратно из сети, не нарвавшись на бяку
  • забрать с установочного диска/флешки/образа (тогда проще уж просто запустить sfc.exe с загрузочного диска)

После того, как вы утвердились в выборе, замените повреждённый файл на обновлённый командой в cmd в формате:

copy полный-путь-к-хорошему-файлу полный-путь-к-плохому-файлу

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

Как добавить SFC /SCANNOW в контекстное меню проводника?

Я предлагаю вам маленькую настройку, с помощью которой проверку целостности системных файлов можно будет запускать из контекстного меню Рабочего стола. Скачайте архив, в котором находятся два файла реестра. Запустите нужный с правами админа:

запустить sfc из контекстного меню

Скачать архив с настройками SFC для контекстного меню

Типичные вопросы к SFC

Наиболее общей ошибкой считается сообщение о том, что повреждения были обнаружены, но не исправлены. Так что читайте логи утилиты. Порядок же действий в таком случае видится таким:

  • отключаете Быструю загрузку Windows и запускаете SFC трижды подряд независимо от результатов
  • при подключённой сети в консоли от имени администратора вводите команду
 Dism /Online /Cleanup-Image /RestoreHealth

после чего после перезагрузки системы утилита SFC запускается вновь

  • дальше — только Восстановление системы или сброс до заводских настроек.

Успехов.

2 комментария
Юрий

1. Почему окно обработчики команд появляется на долю секунды и исчезает ?
2. Почему у меня папка C:\Windows\winsxs\Backup — пустая ?
Вообще причина моих поисков — не удаётся создать точку восстановления Win10 (ошибка 0x80042306)

    GodKnowses

    1. Восстановление системы включено (команда systempropertiesprotection из WIN + R)? Что отвечает cmd от имени администратора на ввод команды:

    vssadmin list shadowstorage

    2. Скопируйте команды и вставьте в консоль команд от имени администратора:

    net stop vss
    net stop swprv
    regsvr32 /s ole32.dll
    regsvr32 /s oleaut32.dll
    regsvr32 /s vss_ps.dll
    vssvc /register
    regsvr32 /s /i swprv.dll
    regsvr32 /s /i eventcls.dll
    regsvr32 /s es.dll
    regsvr32 /s stdprov.dll
    regsvr32 /s vssui.dll
    regsvr32 /s msxml.dll
    regsvr32 /s msxml3.dll
    regsvr32 /s msxml4.dll
    vssvc /register
    net start swprv
    net start vss
    sc config vss start=auto
    chkdsk C: /f /r /x

    После последней команды нажмите Y, согласившись с проверкой и перезагружайтесь.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Максимальный размер загружаемого файла: 50 МБ. Вы можете загрузить: изображение, видео. Ссылки на YouTube, Facebook, Twitter и другие сервисы, вставленные в текст комментария, будут автоматически встроены. Перетащите файлы сюда