Восстановление Windows: ремонтная утилита sfc /scannow.
Настройки Windows

Восстановление системных файлов: команда 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 от имени админа:

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

sfc /scannow

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

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

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

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

sfc


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

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

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

Окно означает, что в текущем сеансе окно консоли можно закрыть: утилита запустится только после ПЕРЕЗАГРУЗКИ ( после ВЫКЛЮЧЕНИЯ компьютера ситуация может повториться). Причина сообщения ясна – файлы кэша в данную минуту обрабатываются системой (“заняты” каким-то процессом/ами: 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 10 это сплошь и рядом. Откройте консоль cmd от имени администратора и введите две последовательные команды:
sc config trustedinstaller start=auto
net start trustedinstaller
  • Сразу проверяем готовность соответствующей службы. Набираем (в строке Найти/Выполнить) команду на открытие консоли
services.msc

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

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

C:\Windows\WinSxS\Temp

Если результат окажется тем же, возможно попробовать сдвинуть запуск утилиты восстановления ещё ближе к запуску Windows: на этот раз sfc /scannow может проверить файлы ещё до загрузки системы. Однако для этого вам потребуется загрузочный носитель с той копией Windows, которая у вас установлена:

вставьте загрузочный диск/флешку
удостоверьтесь, что система на жёстком диске видна с флешки/дисковода

Обратите внимание на букву Локального диска (D) в столбце Папка: запомните её!

ищем консоль в параметрах восстановления

и вводим команду на офлайн проверку вашей Windows:

sfc /scannow /offbootdir=d:\ /offwindir=d:\windows

где d – имя локального диска на компьютере/ноутбуке. Обратите внимание: эта команда позволит вам проверять внешние носители с установленной Windows.

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

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

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

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

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

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

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

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

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

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

  • 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 и не смогла его починить.

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

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

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

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

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

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

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

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

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

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

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

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

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

Успехов

Посмотреть комментарии

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

    • 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, согласившись с проверкой и перезагружайтесь.