Признаюсь, с этой статьёй немного запоздал (лет эдак на дцать, не менее), однако часто в других статьях я отсылаю читателей в никуда или в “общеподготовительные” мануалы по работе с этой полезной системной утилитой. Между тем она является одним из главных и первоначальнейших инструментов не только диагностики состояния системы, но и исправления ошибок в Windows. С появлением Windows 10/8 настольной версии этот инструмент дополнился ещё одним (причём предварительным: если у вас, к примеру, Window 10 – начните именно со средства проверки DISM ) вариантом сравнения имеющихся системных файлов с шаблонными, но, так как обладатели Windows 7 этого инструмента лишены… Знакомьтесь, кто ещё не в курсе: утилита sfc /scannow она же SFC.exe.
Практически – это программа, которая, как и многие из других системных располагается в папке
C:\Windows\System32
и является неотъемлемой частью механизма защиты ресурсов Windows, который охраняет реестровые ключи и отдельные параметры от поражения (равно как и критически важные системные файлы). Если только после запуска утилиты та обнаружит изменения в этих файлах или параметрах, она – утилита – приступит (по команде пользователю) к исправлению ситуации. Для этого сама Windows всегда держит кэшированную копию файлов в системной папке с одноимённым названием. Есть желание – взгляните:
C:\Windows\winsxs\Backup
Для запуска проверки системных файлов откройте cmd от имени админа:
В окне консоли пишем знакомую команду:
sfc /scannow
Утилита проверит нужное, в случае обнаружения несоответствия будет проведена подмена после перезагрузки. У SFC есть маленькие хитрости и скрытые нюансы. Любому из тех, кто прибегает к возможностям этого инструмента, следуют помнить, что если sfc не справилась сразу, не пренебрегите запустить её повторно. Но на этот раз отключите режим Быстрой загрузки. Оптимально количество попыток – 3. Только после трёх неудачных следует приступать к остальным средствам.
Ошибка утилиты Sfc.exe: Для завершения восстановления системы требуется перезагрузка…
Справка по утилите русифицирована, так что вам стоит лишь набрать:
sfc
Результаты работы утилиты будут сопровождаться некоторыми сообщениями в зависимости от того, успешно ли прошло восстановление или в работе произошёл сбой. Но сразу запомните: не торопитесь паниковать в случае неудачных выводов утилиты. Запустите sfc.exe несколько раз и в разных режимах.
Окно означает, что в текущем сеансе окно консоли можно закрыть: утилита запустится только после ПЕРЕЗАГРУЗКИ ( после ВЫКЛЮЧЕНИЯ компьютера ситуация может повториться). Причина сообщения ясна – файлы кэша в данную минуту обрабатываются системой (“заняты” каким-то процессом/ами: Windows элементарно ждёт применения только что установленных обновлений).
Проблема, которую вы пытаетесь разрешить, лежит, по-видимому, в иной плоскости.
Наиболее частое повреждение файлов – либо неправильная работа (а чаще удаление) сторонних программ в/из Windows, а также сбои в работе жёсткого диска (см. “Плохие секторы жёсткого диска“). И утилита частично эти проблема разрешила, подменив на исходные. Настоятельно рекомендую взглянуть на лог утилиты по адресу в консоли – там могут быть интересные детали для разрешения вероятных в последующем ошибок. Ищите теги [SR]
C:\Windows\Logs\CBS\CBS.log
Чтобы вытащить из лога только ту информацию, что касается именно SFC, можно из консоли ввести команду
findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log >"%userprofile%\"Desktop"\sfc.txt"
Большинство пользователей подобное “заявление” ставит в тупик. Я могу предложить вам несколько вариантов действий:
sc config trustedinstaller start=auto net start trustedinstaller
services.msc
Ищем в списке служб Установщик модулей Windows. Тип запуска: Вручную.
C:\Windows\WinSxS\Temp
Если результат окажется тем же, возможно попробовать сдвинуть запуск утилиты восстановления ещё ближе к запуску Windows: на этот раз sfc /scannow может проверить файлы ещё до загрузки системы. Однако для этого вам потребуется загрузочный носитель с той копией Windows, которая у вас установлена:
Обратите внимание на букву Локального диска (D) в столбце Папка: запомните её!
и вводим команду на офлайн проверку вашей Windows:
sfc /scannow /offbootdir=d:\ /offwindir=d:\windows
где d – имя локального диска на компьютере/ноутбуке. Обратите внимание: эта команда позволит вам проверять внешние носители с установленной Windows.
Путь расположения лог-файла sfc.exe вы уже знаете. Чтобы его не искать в терниях системы, по аналогии с официальной справкой по sfc.exe я предлагаю вам набрать такую команду в консоли от имени админа:
findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log >"%userprofile%\Desktop\справка.txt"
На Рабочем столе появится текстовый файл, в котором вы найдёте подробности того, с чем команда sfc /scannow столкнулась:
Большинство записей (а в “холостом” режиме работы утилиты) в логах должны выглядеть так:
Дата Время Тип Режим доступа Подробности
А вот и проблема “…но не может восстановить некоторые из них“:
где самые частые содержания в строках такие:
hash mismatch – хэш-код файла не соответствует системному (“родному”)
this component was referenced by… – компонент изначально относился к… (на него ссылался…)
verifying 100 components – проверка 100 составляющих блока завершена успешно
repairing corrupted file – ремонт повреждённого файла
repair complete – ремонт закончен
Пробуем восстановить файл вручную.
Напоминаю, что логи 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=полный-путь-к-файлу
Остаётся обнаружить и заполучить искомый файл. Для того есть несколько способов:
После того, как вы утвердились в выборе, замените повреждённый файл на обновлённый командой в cmd в формате:
copy полный-путь-к-хорошему-файлу полный-путь-к-плохому-файлу
Не забывая о правильности вводимых путей к обоим файлам, включая буквы томов (логических дисков).
Я предлагаю вам маленькую настройку, с помощью которой проверку целостности системных файлов можно будет запускать из контекстного меню Рабочего стола. Скачайте архив, в котором находятся два файла реестра. Запустите нужный с правами админа:
Скачать архив с настройками 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, согласившись с проверкой и перезагружайтесь.