Всем привет.
Начну с небольшого определения:
Что такое cbs.log?
Файл-лог журнала обслуживания windows, который содержит подробные сведения об ошибках автономного обслуживания, подробные сведения об ошибках интерактивного обслуживания, а так же как вспомогательный элемент для dism.exe
Не вдаваясь в тонкости осмысливания написанного ( определение взято отсюда ) сообщу следующее:
Многим из нас знакома программа sfc.exe, с помощь которой можно проверить состояние целостности защищенных системных файлов.
(Обсуждение в этой теме:
Обзор утилиты sfc.exe
)
Результат ее работы будет отражен как раз так же в этом логе.
Но, для большинства пользователей, анализ результата проверки остается трудновыполнимой задачей.
Хорошо, если система рапортует о том, что защита ресурсов wiindows не обнаружила поврежденных файлов или что все поврежденные файлы восстановлены.
А что делать, если мы видим что то вроде такого сообщения?
Программа защиты ресурсов Windows обнаружила поврежденные файлы, но не может восстановить некоторые из них
Один из шагов к решению проблемы — это произвести анализ лога, который создается при сканировании. Лог-файл находится по пути %windir%\logs\cbs\cbs.log
и открыть его можно любым текстовым редактором, включая стандартный notepad.
Неподготовленный пользователь, открыв и посмотрев лог, скорее всего испытает острое желание закрыть файл и больше не открывать. Поэтому, для комфорта восприятия, пользователи придумали приводить лог в более читабельный вид, распарсив его и отфильтровав «лишние» записи оставить только те, что нужны.
Сделать это можно разными методами, кстати — в сети распространен метод с парсингом файла cbs.log введя в командной строке простую команду:
findstr/c: «[SR]» %windir%\logs\cbs\cbs.log > "указать адрес, куда вы хотите сохранить лог"\sfcdetails.txt
Но, как показала практика, этот метод подходит лишь для того, что бы понять были повреждены защищенные системные файлы или нет.
Как оказалось, иногда, в случае выявления проблем или когда необходимо увидеть какие операции производились, то полученной таким методом информации оказывается недостаточно для того, отразить полноценную куартину.
Как быть?
Для более комфортного первоначального анализа мы с коллегами создали такой скрипт:
Проверка целостности системных файлов утилитой sfc
Запустив скрипт вы сможете произвести проверку целостности системных файлов, произвести очистку и восстановление хранилища данных windows, в котором хранятся резервные копии защищенных системных файлов windows.
Из этих копий и производится восстановление поврежденных файлов.
Скрипт выводит аналогичный, но чуть более информативный лог + копирует в каталог запуска скрипта сам файл cbs.log.
А так же очищает старые записи, что немного экономит место на диске и спасает от зависаний компьютера ( при определенных условиях) при попытке открыть cbs.log. Да и читать будет удобнее и меньше.
Это связано с тем, что порой размер файла cbs.log может раздуваться и я видел монстров по 40 с лишним мегабайт… в общем, скрипт его «облегчает» до оптимального объема.
Идем дальше.
Пробуем читать cbs.log.
Что нужно знать?
При обнаружении поврежденных защищенных системных файлов SR пытается их восстановить из хранилища данных.
Само хранилище данных находится по адресу:
И, если по каким то причинам не удалось получить доступ к файлам или в хранилище они тоже оказались повреждены — в таком случае периодически мы можем наблюдать сообщение о невозможности восстановления файлов.
К которому бонусом может присоединиться какая нибудь трабла в работе системы.
=========================================================
Напомню, что лог cbs.log находится по такому пути:
* предварительно необходимо
включить отображение скрытых и системных файлов.
=========================================================
Вернемся, непосредственно, к файлу cbs.log. Вы его уже открыли в текстовом редакторе?
Открывайте.
Лично мне более удобным для работы с файлами такого типа является редактор notepad++
Так как редакторов много и каждый волен выбирать тот, что ему по душе — то далее я буду описывать свои действия в редакторе в контексте интерфейса notepad++ , а вы (если пользуетесь другим) , можете ориентироваться по аналогии в своем.
Думаю вы уже до этого находили информацию о том, что нужные нам действия помечаются тегом [SR] в каждой строке — именно по этому признаку и принято парсить cbs.log. А если вы не знали — значит узнали теперь)
Теперь у нас с вами два варианта: либо переходить сразу к проблемным файлам через поиск (это если у вас уже есть отфильтрованый одним из упомянутых методов лог) либо вывести все строки с тегом [SR].
Я лично всегда так делаю — легче потом будет навигация.
В notepad++ есть возможность вывести в дополнительной области все найденные по маске ( тегу [SR] ) строки.
Делается это просто: открываем поиск (кнопка в виде бинокля), вводим в строку поиска [SR], далее нажимаем кнопку «Найти все в текущем документе» и получаем в нижней области программы все строки найденные по нужному фильтру, а в вверхней области основной текст файла cbs.log, как видно на скриншоте:
Это позволит вам видеть проблемные места (нижняя область) и одновременно смотреть сопутсвующую информацию по ним в основном логе (верхняя область).
Ну как, все получилось?
Далее в нижней области, где отфильтрованы строки с тегом [SR] пропускаем все что выглядит примерно так:
2018-01-22 19:54:56, Info CSI 00000015 [SR] Verifying 100 (0x0000000000000064) components
2018-01-22 19:54:56, Info CSI 00000016 [SR] Beginning Verify and Repair transaction
2018-01-22 19:54:59, Info CSI 00000018 [SR] Verify complete
Сделать это легко — достаточно воспользоваться скроллом, потянув за него указателем мышки.
Почему пропустить? Файлы системой защиты проверяются блоками по 100 файлов и это на сейчас служебная информация, не несущая для нас полезной нагрузки.
Как только находим нечто отличающееся — стоп.
Например:
2017-10-29 21:28:40, Info CSI 000001e1 [SR] Cannot repair member file [l:24{12}]"gpscript.exe" of Microsoft-Windows-GroupPolicy-Script, Version = 6.1.7601.23452, pA = PROCESSOR_ARCHITECTURE_INTEL (0), Culture neutral, VersionScope = 1 nonSxS, PublicKeyToken = {l:8 b:31bf3856ad364e35}, Type neutral, TypeName neutral, PublicKey neutral in the store, hash mismatch
Все, сейчас мы нашли то, что надо.
Если вбить в переводчик то, что написано раздельным текстом, то можно вполне понять что не так.
На примере данной строки давайте и разберемся.
Cannot repair member file - не удается восстановить файл-член...
PublicKey neutral in the store, hash mismatch - Открытый ключ нейтральный в магазине, несоответствие хэша
Пусть перевод несколько забавный, но суть мы уловили — не удалось восстановить файл gpscript.exe, в хранилище компонентов он так же считается поврежденным, так как хэш сумма файла не совпадает с эталоном.
Что дальше?
Дальше можно либо приступить к восстановлению хранилища компонентов, либо смотреть какой файл нужен, где он должен лежать и как его восстановить, если нет возможности автоматически восстановить хранилище компонентов.
Начнем с второго варианта — получаем информацию о файле. Находим упомянутую строку в основном логе:
2017-10-29 21:28:40, Info CSI 000001e0 Hashes for file member \SystemRoot\WinSxS\x86_microsoft-windows-grouppolicy-script_31bf3856ad364e35_6.1.7601.23452_none_677acd98e72e71cc\gpscript.exe do not match actual file [l:24{12}]"gpscript.exe" :
Found: {l:32 b:yHkCWhwG8j0IOFAIlAuv4/o6FtEO2tqdJOWtoUpBlck=} Expected: {l:32 b:GQ5AzLEfZ9lH3YTPo9vNHTiesdUCuZnB7IW2XQQmn1c=}
2017-10-29 21:28:40, Info CSI 000001e1 [SR] Cannot repair member file [l:24{12}]"gpscript.exe" of Microsoft-Windows-GroupPolicy-Script, Version = 6.1.7601.23452, pA = PROCESSOR_ARCHITECTURE_INTEL (0), Culture neutral, VersionScope = 1 nonSxS, PublicKeyToken = {l:8 b:31bf3856ad364e35}, Type neutral, TypeName neutral, PublicKey neutral in the store, hash mismatch
2017-10-29 21:28:40, Info CSI 000001e2 [SR] This component was referenced by [l:154{77}]"Package_40_for_KB3159398~31bf3856ad364e35~x86~~6.1.1.1.3159398-40_neutral_LDR"
Тут мы отчетливо видим, что файл в хранилище должен быть по адресу:
Hashes for file member \SystemRoot\WinSxS\x86_microsoft-windows-grouppolicy-script_31bf3856ad364e35_6.1.7601.23452_none_677acd98e72e71cc\gpscript.exe
Версия его: Version = 6.1.7601.23452 и на него ссылается компонент патча KB3159398.
Открываем упомянутый патч на сайте Microsoft:
Download Обновление для системы безопасности Windows 7 (KB3159398) from Official Microsoft Download Center
Находим там ссылку «Связанные ресурсы», переходим.
https://support.microsoft.com/ru-ru…-the-security-update-for-group-policy-june-14
Открываем сведения о файлах и находим тот, что нам нужен:
Все, значит это то, что нам нужно.
Просто переустанавливаем это обновление и нужные файлы перезаписываются. А значит — все станет ОК.
Это был пример на живом логе реальной системы.
Почему необходимо найти именно такой же файл и такой же версии?
Потому что когда данный файл внедрялся в систему, то создается ряд условий, на основании которых система защиты будет считать «правильным» только такой файл, который будет соответствовать этим самым условиям.
Другими словами, если какое то из обновлений системы, к примеру, обновляло версию файла и эталоны, то файл из ранее сделанной резервной копии, но другой версии будет считаться неактуальным.
Именно поэтому часто встречающуюся рекомендацию:
Вставьте диск (флэшку) с дистрибутивом вашей версии операционной системы и введите sfc / scannow …
Можно смело пропускать мимо ушей, глаз или как там еще информация дошла до вас.
Почему?
Тут имеется очень важный нюанс — дистрибутив должен быть именно таким же.
То есть с точно таким же набором обновлений, патчей и заплаток.
А найти такой дистрибутив довольно сложно, если вообще будет возможным.
Конечно, если вы были настолько благоразумны, что после очередного обновления сделали резервный диск восстановления — то тут, конечно, все в порядке и файлы подойдут.
Так же файл, считающийся системой защиты поврежденным может не запуститься или работать некорректно.
Он может некорректно взаимодействовать и с другими компонентами операционной системы или прочим программным обеспечением.
Отсюда можно сделать вывод, что при первоначальной проверке заморачиваться на счет наличия дистрибутива не стоит.
Исключение Windows XP — там система потребует наличия папки I386, которая имеется как раз на дистрибутиве (если у вас нет где то отдельно).
В нашем скрипте проверка ее наличия осуществляется автоматически и пользователю не придется выполнять танцы с бубном для того, что бы указать системе где она, если не удастся обнаружить.
Достаточно смонтировать образ диска и все.
Как еще можно восстановить поврежденные файлы?
Можно попытаться выполнить автоматическое восстановление хранилища компонентов через пункт «Расширенная проверка и восстановление файлов» скрипта, или запустив командную строкуот имени Администратора и ввести команду:
(Для Windows 8 — 10)
dism /Online /cleanup-image /restorehealth
Для Windows 7 команда будет выглядеть немного иначе, а так же потребуется наличие установленного Download Обновление для Windows 7 (KB2966583) from Official Microsoft Download Center
DISM /Online /Cleanup-Image /ScanHealth
В обоих случаях интернет должен быть подключен.
После того, как хранилище компонентов будет восстановлено, попробуйте снова выполнить проверку sfc /scannow
Как правило этой операции бывает достаточно.
=================================
Если вам понадобилось восстановление файлов хранилища данных вручную — то вам понадобится
стать владельцем объекта и получить права на изменение.
=================================
Итак, теперь общее понимание у нас имеется, далее просто будем собирать типовые примеры записей лога cbs.log и методы исправления проблем.
Для того, что бы облегчить себе задачу и сэкономить время+силы, я использую для первоначального анализа файл sfcdoc.log, создаваемый скриптом.
Можно использовать и sfcdetalis.txt — но он менее информативен.
Там мы увидим информацию о версии системы, разрядности, установленных патчах и другие вещи.
Нас в логе интересует блок
------ SFCDoc parsing (start process) ------
Там выводится результат работы программы sfc.exe, который записывается в cbs.log и имеет строки с тегом [sr]
Программа sfc.exe проверяет файлы блоками по 100 штук, отсюда и появляются записи типа:
000028a5 [SR] Verify complete
000028a6 [SR] Verifying 100 components
000028a7 [SR] Beginning Verify and Repair transaction
Итак, в логе sfcdoc.log (или sfcdetalis.txt) мы находим примерно такие строки:
00004fa9 [SR] Cannot repair member file [l:12]'userinit.exe' of Microsoft-Windows-UserInit, version 10.0.15042.0, arch Host= amd64 Guest= x86, nonSxS, pkt {l:8 b:31bf3856ad364e35} in the store, hash mismatch
00004fac [SR] Cannot repair member file [l:12]'userinit.exe' of Microsoft-Windows-UserInit, version 10.0.15042.0, arch Host= amd64 Guest= x86, nonSxS, pkt {l:8 b:31bf3856ad364e35} in the store, hash mismatch
00004fad [SR] This component was referenced by [l:181]'Microsoft-Windows-Client-Features-WOW64-Package-AutoMerged-onecore~31bf3856ad364e35~amd64~~10.0.15042.0.Microsoft-Windows-Client-Features-WOW64-Package-AutoMerged-onecore-Deployment
00004fb0 [SR] Could not reproject corrupted file \??\C:\Windows\SysWOW64\userinit.exe; source file in store is also corrupted
Это файлы, которые не удалось восстановить, либо те, что были восстановлены.
Если буквально, то Could not reproject corrupted file \??\C:\Windows\SysWOW64\userinit.exe значит что указанный файл не удалось восстановить из хранилища.
А source file in store is also corrupted — это говорит нам о том, что в хранилище файл тоже поврежден.
Решение: найти поврежденный файл в хранилище данных, получить на него права доступа и заменить оригинальным файлом.
Как понять, какой файл нам необходим, точнее какая версия файла?
Теперь имеет смысл обратиться к файлу cbs.log.
Скопируйте его в удобное место из каталога
Открыть его можно любым текстовым редактором, лично я предпочитаю
Notepad++
Открываем cbs.log и ищем ближайшую с конца строку с искомым нам файлом: в данном случае это userinit.exe
2017-10-26 23:38:05, Info CSI 000041c2 Hashes for file member \SystemRoot\WinSxS\wow64_microsoft-windows-userinit_31bf3856ad364e35_10.0.15042.0_none_f7a5dd2f3ed02235\userinit.exe do not match actual file [l:12]'userinit.exe' :
Found: {l:32 mhHTAD/21TkyflJQwItWEJZr9UaGJebx3CamF6tUPf4=} Expected: {l:32 +bkkt7edQArLakaOJRdpxV8MvpFumMUD88WNy60YfA0=}
2017-10-26 23:38:05, Info CSI 000041c3 [SR] Cannot repair member file [l:12]'userinit.exe' of Microsoft-Windows-UserInit, version 10.0.15042.0, arch Host= amd64 Guest= x86, nonSxS, pkt {l:8 b:31bf3856ad364e35} in the store, hash mismatch
2017-10-26 23:38:05, Info CSI 000041c4 [SR] This component was referenced by [l:181]'Microsoft-Windows-Client-Features-WOW64-Package-AutoMerged-onecore~31bf3856ad364e35~amd64~~10.0.15042.0.Microsoft-Windows-Client-Features-WOW64-Package-AutoMerged-onecore-Deployment'
2017-10-26 23:38:05, Info CSI 000041c5 Hashes for file member \??\C:\Windows\SysWOW64\userinit.exe do not match actual file [l:12]'userinit.exe' :
Found: {l:32 K1Y9CBrNZsBLg7IsV/u9IEgYQ9xrk8frQkTDRknlyMA=} Expected: {l:32 +bkkt7edQArLakaOJRdpxV8MvpFumMUD88WNy60YfA0=}
2017-10-26 23:38:05, Info CSI 000041c6 Hashes for file member \SystemRoot\WinSxS\wow64_microsoft-windows-userinit_31bf3856ad364e35_10.0.15042.0_none_f7a5dd2f3ed02235\userinit.exe do not match actual file [l:12]'userinit.exe' :
Found: {l:32 mhHTAD/21TkyflJQwItWEJZr9UaGJebx3CamF6tUPf4=} Expected: {l:32 +bkkt7edQArLakaOJRdpxV8MvpFumMUD88WNy60YfA0=}
2017-10-26 23:38:05, Info CSI 000041c7 [SR] Could not reproject corrupted file \??\C:\Windows\SysWOW64\userinit.exe; source file in store is also corrupted
Что мы видим?
Hashes for file member ….. do not match actual file
Эта запись гласит о том, что хэш сумма файла не совпадает с оригинальным.
Это и есть причина.
Где надо заменить файл?
\SystemRoot\WinSxS\wow64_microsoft-windows-userinit_31bf3856ad364e35_10.0.15042.0_none_f7a5dd2f3ed02235\userinit.exe
Запомните, что SystemRoot\WinSxS — это адрес расположения хранилища данных.
Где SystemRoot эквивалентен переменной %SystemRoot% — путь до каталога windows на системном диске.
wow64 — это говорит нам о том, что речь идет о 64 разрядной системе и версии файла.
Строка
Cannot repair member file [l:12]'userinit.exe' of Microsoft-Windows-UserInit, version 10.0.15042.0
отображает так же служебную информацию, тут нам важно отметить что исходя из этой записи мы видим, что речь идет о версии файла 10.0.15042.0 (version 10.0.15042.0).
Это значит, что мы должный найти точно такую же версию файла и произвести замену в указанном каталоге.
Равно как и в каталоге C:\Windows\SysWOW64\userinit.exe
Тут есть особенность: так как произвести замену C:\Windows\SysWOW64\userinit.exe в загруженной системе вряд ли удастся, то вам либо придется сделать это из среды восстановления (в таком случае путь будет Х:\Windows\userinit.exe, где Х — это системный диск), либо из под Live CD/USB, либо — самый оптимальный вариант — просто производим замену в харнилище, а затем производим стандартную проверку sfc /scannow и система все сделает за вас сама.
То есть восстановит поврежденные файлы из хранилища.
* узнать версию файла можно кликнув по нему правой кнопкой мыши — свойства -Подробно.
==================================================
Далее разберем следующие строки лога cbs.log
Found: {l:32 b:yHkCWhwG8j0IOFAIlAuv4/o6FtEO2tqdJOWtoUpBlck=} Expected: {l:32 b:GQ5AzLEfZ9lH3YTPo9vNHTiesdUCuZnB7IW2XQQmn1c=}
2017-10-29 21:28:40, Info CSI 000001dd [SR] Cannot repair member file [l:24{12}]"gpscript.exe" of Microsoft-Windows-GroupPolicy-Script, Version = 6.1.7601.23452, pA = PROCESSOR_ARCHITECTURE_INTEL (0), Culture neutral, VersionScope = 1 nonSxS, PublicKeyToken = {l:8 b:31bf3856ad364e35}, Type neutral, TypeName neutral, PublicKey neutral in the store, hash mismatch
2017-10-29 21:28:40, Info CSI 000001de [SR] Cannot repair member file [l:72{36}]"Microsoft.Build.Engine.resources.dll" of Microsoft.Build.Engine.resources, Version = 3.5.7600.16385, pA = PROCESSOR_ARCHITECTURE_MSIL (8), Culture = [l:10{5}]"ru-ru", VersionScope = 1 nonSxS, PublicKeyToken = {l:8 b:b03f5f7f11d50a3a}, Type neutral, TypeName neutral, PublicKey neutral in the store, file is missing
2017-10-29 21:28:40, Info CSI 000001df [SR] This component was referenced by [l:168{84}]"Microsoft-Windows-NetFx3-OC-Package~31bf3856ad364e35~x86~ru-RU~6.1.7601.17514.NetFx3"
2017-10-29 21:28:40, Info CSI 000001e0 Hashes for file member \SystemRoot\WinSxS\x86_microsoft-windows-grouppolicy-script_31bf3856ad364e35_6.1.7601.23452_none_677acd98e72e71cc\gpscript.exe do not match actual file [l:24{12}]"gpscript.exe" :
Found: {l:32 b:yHkCWhwG8j0IOFAIlAuv4/o6FtEO2tqdJOWtoUpBlck=} Expected: {l:32 b:GQ5AzLEfZ9lH3YTPo9vNHTiesdUCuZnB7IW2XQQmn1c=}
2017-10-29 21:28:40, Info CSI 000001e1 [SR] Cannot repair member file [l:24{12}]"gpscript.exe" of Microsoft-Windows-GroupPolicy-Script, Version = 6.1.7601.23452, pA = PROCESSOR_ARCHITECTURE_INTEL (0), Culture neutral, VersionScope = 1 nonSxS, PublicKeyToken = {l:8 b:31bf3856ad364e35}, Type neutral, TypeName neutral, PublicKey neutral in the store, hash mismatch
2017-10-29 21:28:40, Info CSI 000001e2 [SR] This component was referenced by [l:154{77}]"Package_40_for_KB3159398~31bf3856ad364e35~x86~~6.1.1.1.3159398-40_neutral_LDR"
Cannot repair member file … hash mismatch
Здесь так же говорится, что файл такой то не удалось восстановить и имеется несоответствие суммы хэш.
А вот запись in the store, file is missing говорит о том, что файл не просто поврежден, а полностью отсутствует в хранилище компонентов.
А вот эта строка
2017-10-29 21:28:40, Info CSI 000001e2 [SR] This component was referenced by [l:154{77}]"Package_40_for_KB3159398~31bf3856ad364e35~x86~~6.1.1.1.3159398-40_neutral_LDR"
нам говорит о том, что этот компонент связан с обновлением KB3159398.
Если найти в базе Microsoft соответствующую ссылку, то там в перечне изменяемых файлов мы как раз увидим, что обновление выполняет установку файла необходимой версии.
Другими словами решением будет — переустановка обновления KB3159398.
Вот еще один интересный вариант, который вам может попасться в логе:
9:15, Error CSI 00000187 (F) Failed on regenerating file [l:22{11}]"browaub.ttf"[gle=0x80004005]
Здесь говорится о том, что попытка восстановления файла была завершена с ошибкой 0x80004005
Не буду вас гонять по поисковикам и скажу сразу что в данном случае процесс блокировал брандмауэр Windows, как бы бредово это не звучало)
P.S.
Далее будут в таком же формате излагаться другие варианты, если есть вопросы и замечания пишите.
Ошибки Windows Update или SFC в Windows 10 сохраняются в файле CBS.log. В этой статье мы рассмотрим, что такое CBS.log, его расположение и как просмотреть файл CBS.log в Windows 10.
CBS или Component-Based Servicing — это файл, содержащий логи об установленных и удаленных компонентах Windows Update. Таким образом, информация о вашем Windows Update хранится в этих файлах журнала, даже System File Checker (SFC) пишет в CBS.log.
Расположение файла CBS.log
Файл CBS.log всегда будет присутствовать на вашем компьютере под управлением Windows. Если вам интересно и вы хотите проверить этот файл, запустите Проводник (Win + E) и перейдите в следующее место.
C:\Windows\Logs\CBS
Там вы увидите имя файла CBS.log. Это тот самый файл, который содержит информацию о Windows Update.
Как прочитать файл CBS.log
Вы можете просто открыть его с помощью Блокнота.
C:\Windows\Logs\CBS
Однако если вы хотите просто прочитать файл SFC, это не лучший вариант.
Для этого запустите Командную строку с правами администратора, введите следующую команду и нажмите Enter.
findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log >"%userprofile%\Desktop\sfclogs.txt
Это создаст файл sfclogs.txt на рабочем столе. Дважды щелкните по нему, чтобы открыть файл с помощью Блокнота, и прочитайте его. Вы увидите, что перед каждой транзакцией написано «SR». Это означает, что все показанные здесь программы относятся к SFC.exe.
Могу ли я удалить файл CBS.log?
Файл CBS.log необходим для вашего компьютера, поскольку каждый раз, когда вы устанавливаете новое обновление Windows, оно записывается в файл CBS.log. Однако если вам кажется, что он съедает огромный кусок вашего жесткого диска, то можете удалить его, так как это не окажет негативного влияния на ваш компьютер.
Перед этим обязательно отключите службу Windows Update.
Теперь вы можете удалить файл CBS.log, и вы не получите никакого сообщения об ошибке.
Поврежденные файлы регистрируются в журнале CBS.log
В некоторых Windows может возникнуть ошибка следующего содержания
Защита ресурсов Windows обнаружила поврежденные файлы, но не смогла исправить некоторые из них. Подробности содержатся в журнале CBS.Log windir\Logs\CBS\CBS.log.
Чтобы исправить эту проблему, вам может потребоваться запустить DISM.
Спасибо, что читаете! На данный момент большинство моих заметок, статей и подборок выходит в telegram канале «Левашов». Обязательно подписывайтесь, чтобы не пропустить новости мира ИТ, полезные инструкции и нужные сервисы.
Респект за пост! Спасибо за работу!
Хотите больше постов в блоге? Подборок софта и сервисов, а также обзоры на гаджеты? Сейчас, чтобы писать регулярно и радовать вас большими обзорами, мне требуется помощь. Чтобы поддерживать сайт на регулярной основе, вы можете оформить подписку на российском сервисе Boosty. Или воспользоваться ЮMoney (бывшие Яндекс Деньги) для разовой поддержки:
Заранее спасибо! Все собранные средства будут пущены на развитие сайта. Поддержка проекта является подарком владельцу сайта.
CBS log (Component Based Servicing log) или журнал обслуживания на основе компонентов – это лог-файл в операционных системах Windows, который содержит отчеты о состоянии компонентов, используемых в системе.
В процессе обновления или восстановления системы компоненты могут быть повреждены или перепутаны, что может привести к появлению сообщений об ошибках в CBS log. Обнаружение и устранение этих ошибок может привести к стабильной работе системы.
Что означают сообщения об ошибках в CBS log?
Сообщения об ошибках в CBS log могут иметь различные формы и содержание, но обычно они указывают на проблемы с установкой, обновлением или удалением компонентов системы. Примеры сообщений об ошибках:
- «Ошибка при установке компонента»
- «Компонент не может быть обновлен»
- «Компонент не может быть удален»
Сообщения могут содержать информацию о конкретном компоненте (например, название файла) и код ошибки, который может помочь в определении причины проблемы.
Как устранить ошибки в CBS log?
Перед тем, как приступить к устранению ошибок в CBS log, следует сделать резервную копию системы или создать точку восстановления. Это поможет в случае возникновения проблем при решении ошибок.
Существует несколько способов устранения ошибок в CBS log:
-
Использовать инструмент командной строки DISM (Deployment Image Servicing and Management).
- Запустите командную строку от имени администратора
- Введите команду
dism /online /cleanup-image /restorehealth
и нажмите Enter - Подождите, пока инструмент будет проверять и восстанавливать поврежденные компоненты
-
Использовать инструмент проверки целостности компонентов sfc (System File Checker).
- Запустите командную строку от имени администратора
- Введите команду
sfc /scannow
и нажмите Enter - Подождите, пока инструмент будет сканировать и восстанавливать поврежденные компоненты
-
Проверить журналы обновлений Windows Update.
- Откройте меню «Пуск» и найдите «Параметры»
- Выберите «Обновление и безопасность»
- Нажмите «История обновлений», чтобы посмотреть список установленных обновлений
- Если там есть обновления, которые не удалось установить, попробуйте установить их вручную
-
Выполнить переустановку операционной системы Windows.
- Сделайте резервную копию важных данных
- Подготовьте установочный образ Windows
- Запустите установку Windows с использованием установочного образа
- Следуйте инструкциям на экране, чтобы переустановить систему
В случае, если вы не уверены в своих действиях или не можете решить проблему с помощью вышеуказанных методов, рекомендуется обратиться к специалистам.
В данной статье описан метод ручного восстановления хранилища компонентов Windows. Подобные описанному в данном посте методу восстановления работоспособности компонентной модели рождаются вовсе не от хорошей жизни, появляются они под воздействием многочисленных проблем с компонентной моделью операционной системы. Во многих случаях официальные подходы к восстановлению хранилища компонентов не помогают, помимо этого отсутствует какая бы то ни было внятная официальная документация, из чего складывается недопонимание структуры и принципов работы компонентной модели. При подобном отношении со стороны разработчиков абсолютно любые средства вернуть компонентную модель в работоспособное состояние приемлемы!! Как показывает практика, при всех стараниях разработчиков из Microsoft предоставить возможность конечному пользователю системы устранять возникающие проблемы в автоматическом режиме (при помощи специальных утилит), никогда полностью не будут исключены ситуации, в которых эти самые автоматизированные средства будут давать сбои. Причина тут кроется в симбиозе старых механизмов операционной системы и необходимостью постоянного внедрения новых (не оттестированных) технологий, должным образом не заботясь о приведении в надлежащее состояние всех связанных (участвующих) компонентов, что, в свою очередь, порождает огромное количество проблем.
В данной публикации речь пойдет о восстановлении компонента прямой заменой файлов. Фактически методом предусматривается прямая ручная замена поврежденных [кривых, неправильно функционирующих] файлов, являющихся причиной возникновения ошибок, а так же частей реестра. По этой методике, исправные файлы и соответствующие ключи реестра копируются с работоспособной станции-донора. Слабое место метода в том, что для реализации требуется наличие находящейся на том же уровне обновлений нормально функционирующей операционной системы той же версии/ревизии.
В процессе повествования постараемся описать общую методику, тем не менее, в статье будут присутствовать частные случаи из практики.
Определение виновника проблемы
В этом разделе мы опишем принцип поиска битых файлов в составе иерархии каталогов компонентной модели, являющихся причиной возникновения сбоев. Так же попытаемся классифицировать все возможные источники информации о сбойных модулях.
Ошибки в лог-файлах
Основной и пожалуй самый информативный источник о проблемах, связанных с компонентной моделью Windows — лог-файлы системных утилит обслуживания. Чаще всего ошибки выявляются при выполнении обновления системы, то есть установки обновлений/исправлений. Проявляются они в виде разнообразных ошибочных статусов в интерфейсе Центра обновления и окон обновлений. Тем не менее, сам по себе статус не малоинформативен, а вот более детальная информация попадает в специализированные файлы журналов. В данном разделе мы опишем методики поиска источников проблем в лог-файлах результатов работы системных утилит SURT/DISM/SFC/SFCFix, которые работают с хранилищем компонентов и системными каталогами а предмет восстановления целостности компонентной модели системы.
CheckSUR.log / DISM.log
Правила поиска ошибок в файлах %Windir%\Logs\CBS\CheckSUR.log или %Windir%\Logs\DISM\DISM.log:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
================================= Checking System Update Readiness. Binary Version 6.1.7601.24499 2019—07—16 14:04 Checking Windows Servicing Packages Checking Package Manifests and Catalogs Checking Package Watchlist Checking Component Watchlist Checking Packages Checking Component Store (f) CSI Manifest Zero Length 0x00000000 winsxs\Manifests\x86_microsoft—windows—directx—direct3d11_31bf3856ad364e35_7.1.7601.16492_none_e2d7c9f5b7176f4e.manifest x86_microsoft—windows—directx—direct3d11_31bf3856ad364e35_7.1.7601.16492_none_e2d7c9f5b7176f4e (f) CSI Manifest Zero Length 0x00000000 winsxs\Manifests\amd64_microsoft—windows—ie—htmlrendering_31bf3856ad364e35_11.2.9600.17843_none_f5715a5c3755cc36.manifest amd64_microsoft—windows—ie—htmlrendering_31bf3856ad364e35_11.2.9600.17843_none_f5715a5c3755cc36 Summary: Seconds executed: 2948 Found 2 errors CSI Manifest Zero Length Total count: 2 Unavailable repair files: winsxs\manifests\x86_microsoft—windows—directx—direct3d11_31bf3856ad364e35_7.1.7601.16492_none_e2d7c9f5b7176f4e.manifest winsxs\manifests\amd64_microsoft—windows—ie—htmlrendering_31bf3856ad364e35_11.2.9600.17843_none_f5715a5c3755cc36.manifest |
Статусы (первый символ):
(f)
— фатальная ошибка;(w)
— предупреждение;(fix)
— указывает на ошибку, которая была исправлена; выводятся в виде отдельной строки сразу за строкой со статусом (f);
Оставшаяся часть строки содержит имя поврежденного файла и код ошибки.
В конце файла можно видеть секцию Unavailable repair files:, которая группирует все файлы, которые нужно будет заменять.
CBS.log
Несколько вариантов поиска ошибок в лог-файле %WinDir%\Logs\CBS\CBS.log:
- Производим поиск строк, содержащих ключевое слово
Error
(с пробелом ДО или ПОСЛЕ). В их окружении можно найти указание на конкретные ошибки; - Выполняем команду
findstr /c:»[SR]» %windir%\logs\cbs\cbs.log > c:\sfcdetails.txt
в результате чего в корне диска C: будет создан файл
sfcdetails.txt
, включающий лишь строки исходного файла, содержащие префикс[SR]
(содержащие информацию об ошибках).
1: отсутствующие компоненты
. . . 2016—01—05 14:20:31, Info CSI 00001a68 [SR] Verifying 100 (0x0000000000000064) components 2016—01—05 14:20:31, Info CSI 00001a69 [SR] Beginning Verify and Repair transaction 2016—01—05 14:20:31, Info CSI 00001a6a [SR] Cannot repair member file [l:32{16}]«BRCI06UI.DLL.mui» of prnbr002.inf.Resources, Version = 6.1.7600.16385, pA = PROCESSOR_ARCHITECTURE_AMD64 (9), Culture = [l:10{5}]«ru-RU», VersionScope = 1 nonSxS, PublicKeyToken = {l:8 b:31bf3856ad364e35}, Type neutral, TypeName neutral, PublicKey neutral in the store, file is missing 2016—01—05 14:20:31, Info CSI 00001a6b [SR] Cannot repair member file [l:32{16}]«prnbr002.inf_loc» of prnbr002.inf.Resources, Version = 6.1.7600.16385, pA = PROCESSOR_ARCHITECTURE_AMD64 (9), Culture = [l:10{5}]«ru-RU», VersionScope = 1 nonSxS, PublicKeyToken = {l:8 b:31bf3856ad364e35}, Type neutral, TypeName neutral, PublicKey neutral in the store, file is missing 2016—01—05 14:20:31, Error CSI 00001a6c (F) STATUS_OBJECT_NAME_NOT_FOUND #28089837# from Windows::Rtl::SystemImplementation::DirectFileSystemProvider::SysCreateFile(flags = (AllowSharingViolation), handle = {provider=NULL, handle=0}, da = (SYNCHRONIZE|FILE_READ_ATTRIBUTES), oa = @0x195c7d0—>OBJECT_ATTRIBUTES {s:48; rd:NULL; on:[100]»\??\C:\Windows\WinSxS\amd64_prnbr002.inf_31bf3856ad364e35_6.1.7600.16385_none_49c93aa2c4304e9e\Amd64″; a:(OBJ_CASE_INSENSITIVE)}, iosb = @0x195c7b0, as = (null), fa = 0, sa = (FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE), cd = FILE_OPEN, co = (FILE_SYNCHRONOUS_IO_NONALERT|0x00004000), eab = NULL, eal = 0, disp = Invalid) 2016—01—05 14:20:31, Error CSI 00001a6d@2016/1/5:10:20:31.885 (F) d:\win7sp1_gdr\base\wcp\sil\merged\ntu\ntsystem.cpp(2057): Error STATUS_OBJECT_NAME_NOT_FOUND originated in function Windows::Rtl::SystemImplementation::DirectFileSystemProvider::SysCreateFile expression: (null) 2016—01—05 14:20:31, Error CSI 00001a6e (F) STATUS_OBJECT_NAME_NOT_FOUND #28089836# from Windows::Rtl::SystemImplementation::CDirectory::OpenExistingDirectory(...)[gle=0xd0000034] 2016—01—05 14:20:31, Error CSI 00001a6f (F) STATUS_OBJECT_NAME_NOT_FOUND #28089835# from Windows::Rtl::SystemImplementation::CDirectory_IRtlDirectoryTearoff::OpenExistingDirectory(flags = 0, da = (SYNCHRONIZE), oa = @0x195d0e0—>SIL_OBJECT_ATTRIBUTES {s:40; on:»Amd64″; a:(OBJ_CASE_INSENSITIVE)}, sa = (FILE_SHARE_READ|FILE_SHARE_WRITE), oo = (FILE_DIRECTORY_FILE|FILE_SYNCHRONOUS_IO_NONALERT|FILE_OPEN_FOR_BACKUP_INTENT), dir = NULL, disp = (null)) . . . |
В обрамлении видно строки, содержащие ключевые слова Cannot repair member file.. указывающие на то, что:
- содержимое файла не соответствует содержимому хранилища для файла и WRP пытается его восстановить, тем не менее..
- ..WRP не может восстановить файл описанного в строке компонента, потому что записи в реестре о нем присутствуют, а вот сам файл отсутствует в хранилище, о чем недвусмысленно намекает фрагмент строки ..file is missing.
Ниже по тексту можно найти статус STATUS_OBJECT_NAME_NOT_FOUND, указывающий на отсутствие подкаталога. В нашем случае, как видно из отчета, повреждению подверглась целая иерархия компонента, состоящая из подкаталогов и файлов, размещавшаяся в каталоге C:\Windows\WinSxS\amd64_prnbr002.inf_31bf3856ad364e35_6.1.7600.16385_none_49c93aa2c4304e9e. Заглянув в целевой каталог, я убедился, что он действительно пуст, а вот что за событие/действие удалило его содержимое, остается только гадать, хотя подобные инциденты в Windows-системах сплошь и рядом.
2: отсутствие манифеста
. . . 2019—05—27 14:32:54, Info CSI 000004f9 Looking for manifest in Backup Dir... 2019—05—27 14:32:54, Error CSI 000004fa (F) Unable to load manifest for component [ml:280{140},l:186{93}]«wow64_microsoft-windows-directshow-core_31bf3856ad364e35_6.1.7601.24382_none_0f268a5b523efde9»[gle=0x80004005] 2019—05—27 14:32:54, Error CSI 000004fb@2019/5/27:11:32:54.653 (F) d:\w7rtm\base\wcp\componentstore\storelayout.cpp(2712): Store corruption detected in function ComponentStore::CRawStoreLayout::FetchManifestContent expression: 0 FileHashMismatch on resource [120]«\winsxs\manifests\wow64_microsoft-windows-directshow-core_31bf3856ad364e35_6.1.7601.24382_none_0f268a5b523efde9.manifest»[gle=0x80004005] 2019—05—27 14:32:56, Error CSI 000004fc (F) STATUS_SXS_COMPONENT_STORE_CORRUPT #1525870# from CCSDirectTransaction::OperateEnding at index 6 of 185 (0x00000000000000b9) operations, disposition 0[gle=0xd015001a] 2019—05—27 14:32:56, Error CSI 000004fd (F) HRESULT_FROM_WIN32(14098) #1496294# from Windows::ServicingAPI::CCSITransaction::ICSITransaction2_AddComponents(Flags = 4, a = @0x1b50440, mp = @0x1b50c40, disp = 0)[gle=0x80073712] 2019—05—27 14:32:56, Info CBS Failed to add one or more component [HRESULT = 0x80073712 — ERROR_SXS_COMPONENT_STORE_CORRUPT] 2019—05—27 14:32:56, Error CBS Failed to complete component closure [HRESULT = 0x80073712 — ERROR_SXS_COMPONENT_STORE_CORRUPT] 2019—05—27 14:32:56, Info CSI 000004fe@2019/5/27:11:32:56.806 CSI Transaction @0x8abb930 destroyed 2019—05—27 14:32:56, Info CBS Perf: Resolve chain complete. 2019—05—27 14:32:56, Info CBS Failed to resolve execution chain. [HRESULT = 0x80073712 — ERROR_SXS_COMPONENT_STORE_CORRUPT] 2019—05—27 14:32:56, Error CBS Failed to process single phase execution. [HRESULT = 0x80073712 — ERROR_SXS_COMPONENT_STORE_CORRUPT] 2019—05—27 14:32:56, Info CBS WER: Generating failure report for package: Package_for_RollupFix~31bf3856ad364e35~amd64~~7601.24443.1.8, status: 0x80073712, failure source: Resolve, start state: Absent, target state: Installed, client id: WindowsUpdateAgent 2019—05—27 14:32:56, Info CBS Failed to query DisableWerReporting flag. Assuming not set... [HRESULT = 0x80070002 — ERROR_FILE_NOT_FOUND] . . . |
Ключевые слова, на которые в данном случае стоит обращать внимание:
- Manifest hash for component .. does not match expected value.
- Unable to load manifest for component ..
Из чего следует, что в данном случае возникла проблема с файлом wow64_microsoft-windows-directshow-core_31bf3856ad364e35_6.1.7601.24382_none_0f268a5b523efde9.manifest, который является манифестом и располагается в поддиректории %SystemRoot%\WinSxS\Manifests. При более близком изучении было выяснено, что указанный файл почему-то нулевой.
3: попытка удаления отсутствующего компонента
При попытках установки обновления безопасности мы можем столкнуться со следующей проблемой:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
. . . 2019—05—28 12:20:09, Info CBS Exec: Unprojecting Package: Package_820_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3, Update: 4019265—2871_neutral_LDR, UninstallDeployment: amd64_006f1bee347aa0a86984388c82ccb379_31bf3856ad364e35_6.1.7601.23529_none_4683d079b6ce11b3 2019—05—28 12:20:09, Info CBS Exec: Uninstalling Package: Package_846_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3 2019—05—28 12:20:09, Info CBS Exec: Uninstalling Package: Package_846_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3, Update: 4019265—2966_neutral_LDR 2019—05—28 12:20:09, Info CBS Exec: Unprojecting Package: Package_846_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3, Update: 4019265—2966_neutral_LDR, UninstallDeployment: amd64_0f4370f0564ad69cbf1c9624ac455552_31bf3856ad364e35_7.6.7601.23775_none_3e0e14d4d5b6573f 2019—05—28 12:20:09, Error CBS Failed. Attempted to uninstall a version of a non—driver component that is not installed, version: 0X700061db15cdf, component: amd64_microsoft—windows—w..lient—aux.resources_31bf3856ad364e35_7.6.7601.23775_ru—ru_306f57c17eac5f89, owner: Package_846_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3.4019265—2966_neutral_LDR [HRESULT = 0x80004005 — E_FAIL] 2019—05—28 12:20:09, Info CBS Failed to mergecomponent [HRESULT = 0x80004005 — E_FAIL] 2019—05—28 12:20:09, Info CBS ComponentAnalyzerUninstallDeployment: Failed on update: 4019265—2966_neutral_LDR [HRESULT = 0x80004005 — E_FAIL] 2019—05—28 12:20:09, Info CBS Failed to execute item[0] in Package: Package_846_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3, Update: 4019265—2966_neutral_LDR [HRESULT = 0x80004005 — E_FAIL] 2019—05—28 12:20:09, Info CBS Failed to execute execution update. [HRESULT = 0x80004005 — E_FAIL] 2019—05—28 12:20:09, Info CBS Failed to execute execution package: Package_846_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3 [HRESULT = 0x80004005 — E_FAIL] 2019—05—28 12:20:09, Info CBS Failed to prepare execution [HRESULT = 0x80004005 — E_FAIL] 2019—05—28 12:20:09, Info CSI 00000016@2019/5/28:09:20:09.916 CSI Transaction @0x1b71940 destroyed 2019—05—28 12:20:09, Info CBS Perf: InstallUninstallChain complete. 2019—05—28 12:20:09, Info CBS Failed to execute execution chain. [HRESULT = 0x80004005 — E_FAIL] 2019—05—28 12:20:09, Error CBS Failed to process single phase execution. [HRESULT = 0x80004005 — E_FAIL] 2019—05—28 12:20:09, Info CBS WER: Generating failure report for package: Package_for_RollupFix~31bf3856ad364e35~amd64~~7601.24443.1.8, status: 0x80004005, failure source: Execute, start state: Staged, target state: Installed, client id: WindowsUpdateAgent 2019—05—28 12:20:09, Info CBS Failed to query DisableWerReporting flag. Assuming not set... [HRESULT = 0x80070002 — ERROR_FILE_NOT_FOUND] 2019—05—28 12:20:10, Info CBS Failed to add %windir%\winsxs\pending.xml to WER report because it is missing. Continuing without it... 2019—05—28 12:20:10, Info CBS Failed to add %windir%\winsxs\pending.xml.bad to WER report because it is missing. Continuing without it... 2019—05—28 12:20:10, Info CBS Reboot mark refs: 0 . . . |
Судя по всему установщик ругается на попытку удаления отсутствующего компонента amd64_microsoft-windows-w..lient-aux.resources_31bf3856ad364e35_7.6.7601.23775_ru-ru_306f57c17eac5f89 из пакета Package_846_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3.4019265-2966_neutral_LDR. Сам компонент оказался на месте вместе со собственным манифестом, поэтому не понятно что же не нравится стеку обслуживания. Тем не менее что-то с этим пакетом явно не так.
Окна ошибок в интерфейсе
Часто ошибки наблюдаются пользователем визуально, в виде статусов ошибок в окне Центра обновления Windows, но иногда их можно увидеть в автономных информационных окнах. Например, отказ запуска множества исполняемых системных образов может выражаться в постоянно всплывающих окнах, в заголовке которых можно видеть «<имя_образа> (в контексте которого произошел сбой) — ошибочный образ», а в информационной части текст ошибки: X:\XXXXXX\xxxxxxxx.dll либо не предназначен для выполнения под управлением Windows или содержит ошибку. Попробуйте переустановить программу с помощью исходного установочного носителя или обратитесь к системному администратору или поставщику программного обеспечения за поддержкой:
В английских версиях в заголовке можно увидеть «<filename> — bad image», а описание звучит как: «<filename> is either not designed to run on Windows or it contains an error. Try installing the program again using the original installation media or contact your system administrator or the software vendor for support.» Часто сообщение в окне дополняется специфической деталью сбоя, например кодом ошибки: «Error status 0xc000012f».
Данный класс ошибок имеет множество специфических особенностей, однако мы будем разбирать их в контексте (исключительно) повреждения системных библиотек, то есть метод сложно применим к различного рода сторонним приложениям, в которых аналогичные проблемы запуска связаны с основным исполняемым файлом и внутренними библиотеками приложения. Исходя из этого, метод нельзя отнести к универсальным.
В данном случае, как вы можете видеть на снимке экрана выше, у нас повреждена библиотека с именем ncrypt.dll, относительно неё мы и поведем дальнейшее повествование.
Тем не менее, в ваших случаях для выявления виновника сбоя потребуется исследовать лог-файл %WinDir%\Logs\CBS\CBS.log и составить список проблемных файлов. И при не столь очевидных намеках на источник проблемы всегда начинайте исследование сбоя с анализа данного лог-файла.
Восстановление файлов
На предыдущем шаге мы определились в виновником ошибки, то есть определили имена поврежденных/удаленных файлов:
- Если мы наблюдаем ошибку в виде информационного окна в графическом интерфейсе, то виновником обычно является модуль, имя которого фигурирует в тексте (в примере выше: ncrypt.dll). В этом случае мы будем менять все без исключения ревизии проблемного файла;
- Если мы производим разбор лог-файлов отчетов сервисных утилит (CBS/DISM/CheckSur/SFCFix), то виновник(и) проблемы обычно предстают перед нами в виде списка конкретных файлов компонентов или обновлений;
Давайте в этом разделе опишем метод восстановления компонента прямой заменой файлов подробнее, разбив весь процесс на подразделы, подробно описывающие шаги.
Поиск рабочих экземпляров файлов
На этом этапе нам необходимо найти рабочие копии поврежденных или отсутствующих файлов. Существует несколько основных подходов по нахождению рабочих копий:
- Скопировать файлы с аналогичной, полностью работоспособной системы той же версии/редакции:
- при помощи поиска (в проводнике, или любым специализированным средством типа Far/Total Commander) по системному разделу (обычно C:\) находим все каталоги, содержащие в своем названии искомую маску/имя (для случая выше: *ncrypt*). Сокращенный вывод:
. . .
C:\Windows\winsxs\x86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24417_none_6072150268f96612
C:\Windows\winsxs\amd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18741_none_bbe0d7630856b4a1
C:\Windows\winsxs\x86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24408_none_607de53868f06378
C:\Windows\winsxs\amd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18812_none_bc024957083d774c
C:\Windows\winsxs\x86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24387_none_602663a869322c82
C:\Windows\winsxs\amd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18869_none_bbd33bc1085fb462
C:\Windows\winsxs\x86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24384_none_602362ca6934e07d
C:\Windows\winsxs\amd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18923_none_bbf87b9b0844a9bb
C:\Windows\winsxs\x86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24357_none_6046d36c6919d8af
C:\Windows\winsxs\amd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18933_none_bbedabaf084cc5ac
C:\Windows\winsxs\x86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24335_none_605a72b0690b6e1f
C:\Windows\winsxs\amd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18939_none_bbf3ad6b08475db6
. . .
Соответственно, в найденных директориях располагаются и подпадающие под маску файлы (ncrypt.dll). Как можно увидеть по именам каталогов, они предназначаются для хранения различных ревизий компонента, включающего в себя файл ncrypt.dll. Но определить точно какая именно ревизия используется тем или иным приложением сложно, поскольку используются обычно сразу несколько ревизий.
Можно произвести замену файлов и в системных каталогах, таких как C:\Windows\system32\. Хотя делать это не обязательно, поскольку файлы там представляет собой жесткие ссылки на оригиналы в хранилище WinSxS, а они восстанавливаются автоматически при проверке через sfc).
- в ходе того же самого поиска, кроме директорий, выявляются и файлы, которые располагаются по следующим путям (вывод сокращен):
. . .
C:\Windows\winsxs\Manifests\amd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24408_none_bc9c80bc214dd4ae.manifest
C:\Windows\winsxs\Manifests\x86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18741_none_5fc23bdf4ff9436b.manifest
C:\Windows\winsxs\Manifests\amd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24387_none_bc44ff2c218f9db8.manifest
C:\Windows\winsxs\Manifests\x86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18812_none_5fe3add34fe00616.manifest
C:\Windows\winsxs\Manifests\amd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24384_none_bc41fe4e219251b3.manifest
C:\Windows\winsxs\Manifests\x86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18869_none_5fb4a03d5002432c.manifest
C:\Windows\winsxs\Manifests\amd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24357_none_bc656ef0217749e5.manifest
C:\Windows\winsxs\Manifests\x86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18923_none_5fd9e0174fe73885.manifest
C:\Windows\winsxs\Manifests\amd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24335_none_bc790e342168df55.manifest
C:\Windows\winsxs\Manifests\x86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18933_none_5fcf102b4fef5476.manifest
C:\Windows\winsxs\Manifests\amd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24308_none_bc9c7ed6214dd787.manifest
C:\Windows\winsxs\Manifests\x86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18939_none_5fd511e74fe9ec80.manifest
. . .
- Разархивировать требуемые файлы из пакета обновления.
- Для этого определяем имя обновления KBXXXXXXXX, в состав которого входят обнаруженные на предыдущем шаге файлы, из Центра загрузок Майкрософт или Центра обновления Майкрософт или попросту используя поиск.
- Распаковываем содержимое выкачанного только что пакета обновления (.msu) в произвольную (временную) директорию:
expand -F:* windows6.1-kb4019265-x64_c21fb9314da54cf6bd7972581da3159535f55aec.msu c:\temp\4019265
- после чего в целевой директории мы увидим следующее содержимое:
- .xml-файл — метаданные-описатели пакета обновления (.msu). Утилиты установки используют .xml-файл при выполнении установки в автоматическом режиме;
- .cab-файл — архив с данными (полезная нагрузка) обновления;
- *-pkgProperties.txt — файл с описанием свойств пакета (дата релиза, архитектура, тип, ссылка на KB и прочее);
- WSUSSCAN.cab — файл оффлайн-сценария проверки;
- затем выполняем еще одну команду, теперь уже над только что распакованным .cab-файлом:
expand -F:* windows6.1-kb4019265-x64.cab c:\temp\4019265\extracted
- после этого необходимые нам для замены файлы будут располагаться в директории c:\temp\4019265\extracted
Установка безопасности для каталогов/файлов
В операционных системах Windows директория компонентной модели WinSxS (и вложенные в неё объекты) защищены на уровне разрешений файловой системы. Поэтому следующим шагом нам потребуется взять владение каталогов WinSxS для собственной учетной записи (под которой выполняете восстановление), затем выставить полные разрешения для этой учетной записи, а далее применить их для всех вложенных папок/файлов.
Выполнять приведенные здесь действия следует из-под учетной записи с правами локального Администратора (с эскалацией привилегий).
Сделать это можно двумя способами:
- Через проводник. Нажимаем правую клавишу мыши на директории WinSxS — пункт Свойства — вкладка Безопасность — кнопка Дополнительно — вкладка Владелец — кнопка Изменить — ставим курсор на нужного нам пользователя, активируем чекбокс Заменить владельца подконтейнеров и объектов — жмем кнопку Применить. После окончания процесс закрываем все открытые окна через кнопку OK, повторно жмем правую клавишу мыши на директории WinSxS — вкладка Безопасность — во фрейме Группы и пользователи кнопка Изменить — выделяем курсором группу Администраторы — ставим разрешения Изменение и Запись;
- Через командную строку. Из командной строки (cmd) выполняем следующие команды:
takeown /f c:\windows\winsxs\*
даем группе Администраторы (в которую, я надеюсь, включена ваша учетная запись) полный доступ к целевому файлу, для этого выполняем следующую команду:
icacls c:\windows\winsxs\* /GRANT АДМИНИСТРАТОРЫ:F
Копирование каталогов/файлов
И последним шагом выполняется непосредственно копирование (с заменой) с донорской (исправной) системы на целевую (проблемную) содержимого всех обнаруженных на предыдущих шагах каталогов и файлов, не забывайте так же и .manifest-файлы.
Что именно мы копируем:
- Если присутствуют пара
.cat
или.mum
файлов компонента, то скопировать их в каталог %WinDir%\servicing\Packages (с донора на цель). Копировать именно всю пару, даже если поврежден всего-лишь один из них (и один из них отображается в лог-файле); - Если к паре
.cat
/.mum
файлов присутствует еще и.ses
-файл, то копируем и его; - Если присутствуют одноименные манифесты (
.manifest
-файл(ы)) компонента, то скопировать их в каталог %WinDir%\WinSxS\Manifests (с донора на цель); - Если присутствуют остальные подкаталоги/файлы компонента, то скопировать их в каталог компонента %WinDir%\WinSxS\имя_компонента\ (c донора на цель);
- Если присутствуют файлы в директории C:\Windows\System32, то можно скопировать и их (с донора на цель). Хотя делать это и не обязательно, поскольку жесткие ссылки восстанавливаются при проверках через sfc;
Производить операции копирования файлов (во избежание блокировок на работающей системе) можно при помощи любого загрузочного LiveCD, предварительно скопировав все переносимые файлы на флешку (или любой иной носитель). Выполнять же само копирование можно как при помощи командной строки, так и выполнить перемещение с помощью проводника Windows.
Восстановление реестра
Обычно файловых исправлений бывает достаточно для того, что бы устранить ошибки в компонентной модели Windows, соответственно, исправить ошибки, происходящие в процессе установки обновлений. Тем не менее, бывают случаи, когда повреждается еще и реестровая часть компонента, тогда требуется производить дополнительные действия по восстановлению:
- Запустить командную строку (cmd);
- Подключить динамический куст реестра HKLM\COMPONENTS командой:
reg load HKLM\COMPONENTS C:\WINDOWS\SYSTEM32\CONFIG\COMPONENTS
если выскакивает ошибка:
процесс не может получить доступ к файлу, так как этот файл занят другим процессом.
то куст уже подключен.
- Запустить редактор реестра regedit;
- В открывшемся окне нажать Ctrl+F и ввести имя компонента, который вы восстанавливали на предыдущем шаге;
- В случае отсутствия каких либо записей реестра, выполнить импортирование соответствующих записей реестра о компоненте с рабочей машины;
- Выполнить команду:
reg unload HKLM\COMPONENTS
- выполнить перезагрузку операционной системы;
Содержание
- Причины
- Способы восстановления
- Чистка реестра
- Поиск вредоносных объектов
- Восстановление системы
- Средства проверки системных файлов
- Завершение работ
- Что такое CBS.log?
- Как исправить ошибку WindirLogsCBSCBS.log
- Альтернативные решения при повреждении CBS.log
- 8 комментариев к “Восстанавливаем поврежденные системные файлы Windows”
Проблемы с файлом CBS.log встречаются нередко. Из расширения становится ясно, что это файл-лог. В нем хранятся изменения в статичных системных файлах. В случае если файл CBS.log поврежден или отсутствует, система не может гарантировать стабильность работы. появляется ошибка ERROR Can not open file «C:WindowsLogsCBSCBS.log». Давайте попробуем разобраться в причинах данной ошибки, а ниже дадим рекомендации по ее устранению.
Файл CBS.log поврежден — что делать?
Причины
Повредить хранимые данные могут:
- вирусы;
- обновления Windows;
- обновления драйверов оборудования;
- установленные приложения;
- неполная установка приложений, обновлений;
- повреждения жесткого диска или его износ;
- конфликт оборудования или программ.
Вследствие этого возникают следующие проблемы:
- повреждение ключей реестра;
- удаление или повреждение непосредственно самого файла;
- стирание вспомогательных файлов.
В результате пользователь получает сообщения о том, что CBS.log не найден (отсутствует), возникли ошибки его работы (ошибка загрузки, не удалось загрузить) и прочие: ошибка выполнения, не удалось зарегистрировать и сообщение ERROR Can not open file «C:WindowsLogsCBSCBS.log».
О том, что делать в таких ситуациях, далее и пойдет речь
Способы восстановления
Итак, рассмотрим возможные варианты по порядку увеличения их сложности и начнем с чистки реестра Windows.
Чистка реестра
Так как причина может крыться во всевозможных остаточных файлах и пустых ключах, то начнем именно отсюда. Перед проведением процедуры рекомендуем заготовить резервную копию реестра и использовать специальные программы: CCleaner, JV-16 Power Tools и прочие.
В этом случае нужно сделать несколько шагов.
- Найти раздел «Работа с реестром» в выбранной утилите.
- Создать резервную копию реестра.
- Нажать кнопку поиска неисправностей.
- Произвести чистку.
Нередко данная процедура способствует ускорению работы и загрузки ОС. Дополнительно к этому, желательно очистить временные файлы и папки. Сделать это можно все теми же утилитами. Нелишним будет обновление драйверов устройств.
Поиск вредоносных объектов
Как и в предыдущем методе, ничего делать самому не нужно – все сделает выбранное приложение. В качестве лечащей утилиты можно использовать Dr. Web CureIt!, NOD32 и прочие.
Обратите внимание, что работа одновременно двух антивирусов может привести к нежелательным последствиям и дополнительным проблемам. При обнаружении вредоносных файлов, не спешите их удалять – обязательно запишите название, а уже после этого проводите лечение.
Восстановление системы
Если все вышеперечисленное не решило проблемы, то можно воспользоваться восстановлением системы. Для этого нужно сделать следующее.
- Нажать «Пуск».
- В поисковой строке набрать «восстановление системы».
- Начать процедуру от имени Администратора.
- Следовать инструкциями.
Альтернативным вариантом является инициирование процесса при запуске загрузочного диска. Еще один способ активации службы – восстановление при загрузке. Для этого нужно нажимать клавишу «F8» (несколько раз) после включения компьютера. В появившемся окне выбрать пункт «Восстановление Windows», и дождаться завершения процедуры. Здесь же дополнительно можно выбрать «Устранение неполадок компьютера».
Средства проверки системных файлов
Это самый действенный метод, однако к нему стоит прибегать только после проведения вышеописанных операций, чтобы избежать повторного повреждения файла.
Как запустить средства проверки системных файлов?
- Нажать «Пуск».
- В поиске набрать «cmd» или «командная строка» и запустить ее от имени Администратора.
- В открывшемся окне ввести: sfc /scannow.
команда sfc/ scannow
Если возникнут сообщения о том, что запрошенную операцию выполнить невозможно, то необходимо попробовать сделать это в безопасном режиме.
Если же были обнаружены повреждения файла CBS.log, но восстановить его не удалось, то можно попробовать скопировать его с другого компьютера с соответствующей версией ОС.
Windows Update для Windows 8 и 8.1 дает возможность воспользоваться восстановлением хранилища. Чтобы сделать это, нужно открыть PowerShell от имени администратора, и в окне ввести: Dism /Online /Cleanup-Image /RestoreHealth. Против надписи Image Health State должно значиться Healthy. Восстановление самого хранилища может помочь, команда «sfc /scannow» выполняется с ошибками.
Завершение работ
Если же все вышеописанное не помогло и Файл CBS.log поврежден или отсутствует, как и ранее, то остается только один выход – чистая установка Виндовс. Напишите в комментариях какой из способов помочь вам решить проблему «файл CBS.log поврежден» и вы знаете что делать в подобной ситуации. Если у вас остались вопросы — сообщите о них нам и мы постараемся помочь вам.
При проверке целостности системных файлов с помощью утилиты SFC пользователь может получить сообщение об обнаружении ряда повреждённых файлов, восстановить которые не удалось. Данные о таких файлах система записывает в файл CBS.log, открыть который также не удаётся по различным причинам (в частности из-за повреждения данного файла). В данном материале я разберу, что предпринять в такой ситуации, и как исправить windirLogsCBSCBS.log повреждён на вашем ПК
Сообщение о невозможности открытия файла CBS.log
Что такое CBS.log?
Системная утилита SFC, предназначенная для проверки целостности системных файлов ОС Виндовс, записывает данные по проверке и восстановлению файлов в файл CBS.log. Последний расположен по адресу %windir%LogsCBS, и может быть недоступным при попытке просмотреть его содержимое стандартным способом (через «Блокнот», файловый менеджер и др.).
Это может быть связано с закрытием доступа к данному файлу со стороны Виндовс, а также с повреждением данного файла по различным причинам (вирусы, осыпание диска, другие релевантные причины).
Для решения возникшей проблемы с повреждением windirLogsCBSCBS.log необходимо воспользоваться алгоритмом, который я приведу ниже.
Как исправить ошибку WindirLogsCBSCBS.log
В случае, если доступ к файлу закрыт на уровне системных настроек Виндовс, рекомендуется, запустит командную строку с правами администратора, в ней набрать:
после чего нажать на ввод. Файл данного лога будет сохранён на рабочем столе вашего PC, и вы сможете его просмотреть через самый обычный «Блокнот». Во время данного просмотра, в частности, вы можете увидеть, какие именно файлы утилита SFC посчитала повреждёнными, и скопировать их из стабильной системы.
Если же после запуска и работы утилиты SFC система выдала текст о невозможности восстановления ряда файлов, и записи информации об них в файле CBS, тогда выполните следующее:
Запустите командную строку от имени админа, и в ней последовательно наберите (обратите внимание на пробелы, они должны быть так, как приведено мной ниже:
Дождитесь полного окончания данных процедур (могут занять полчаса-час), а затем перезагрузите ваш PC. После этого всё должно стабильно работать.
Воспользуйтесь возможностями утилиты SFC
Альтернативные решения при повреждении CBS.log
В ряде случаев причиной возникновения проблемы является действие вирусных программ и осыпание диска. В первом случае рекомендуется проверить ваш PC с помощью соответствующего антивирусного инструментария (например, Доктор Веб Кюрейт, AdwCleaner и других аналогов). Затем перезагрузить ПК, и постараться вновь получить доступ к данному лог-файлу.
В случае осыпания диска, рекомендую воспользоваться такими утилитами как «Victoria HDD», «HDD Regenerator» и других, которые проверят ваш диск на наличие битых секторов, и при возможности восстановят его.
Утилита «Виктория HDD» поможет в проверке вашего диска
Для обнаружения поврежденных файлов будем использовать встроенную утилиту SFC.exe, для этого необходимо запустить командную строку от имена администратора и выполнить команду sfc /scannow
По завершению процесса, вы получите один из результатов:
Файл CBS.log содержит большое количество служебной информации, для того чтоб упростить поиск поврежденных файлов, там же в командной строке выполните команду:
В результате на рабочий стол будет сохранен текстовый файл, откройте его в любом текстовом редакторе и найдите строчки наподобие этой:
После определения списка поврежденных файлов, необходимо заменить их исправными копиями, проще всего их скопировать с рабочей системы, на которой предварительно стоит выполнить проверку целостности командой из начала статьи. После того как исправные файлы подготовлены, можно приступать к замене, для этого необходимо изменить права доступа к поврежденным файлам, вводим в командной строке:
takeown /f C:windowssystem32jscript.dll
где C:windowssystem32jscript.dll — полный путь к поврежденному файлу.
даем полный доступ к файлу командой:
icacls C:windowssystem32jscript.dll /GRANT ADMINISTRATORS:F
Путь к файлу и имя файла пишем свои.
После этого можно командой copy можно заменить поврежденные файлы исправными:
copy E: empjscript.dll C:windowssystem32jscript.dll
Где E: empjscript.dll — путь откуда копируем исправный файл, C:windowssystem32jscript.dll — куда копируем (файл который заменяем).
8 комментариев к “Восстанавливаем поврежденные системные файлы Windows”
Где найти исправленные файлы?
Info CSI 000001dd [SR] Cannot repair member file [l:22<11>]»mingliu.ttc» of Microsoft-Windows-Font-TrueType-MingLiU, Version = 6.3.9600.16384, pA = PROCESSOR_ARCHITECTURE_AMD64 (9), Culture neutral, VersionScope = 1 nonSxS, PublicKeyToken = , Type neutral, TypeName neutral, PublicKey neutral in the store, hash mismatch
CSI 000001e1 [SR] Cannot repair member file [l:22<11>]»mingliu.ttc» of Microsoft-Windows-Font-TrueType-MingLiU, Version = 6.3.9600.16384, pA = PROCESSOR_ARCHITECTURE_AMD64 (9), Culture neutral, VersionScope = 1 nonSxS, PublicKeyToken = , Type neutral, TypeName neutral, PublicKey neutral in the store, hash mismatch
Info CSI 00000a56 [SR] Cannot repair member file [l:22<11>]»mingliu.ttc» of Microsoft-Windows-Font-TrueType-MingLiU, Version = 6.3.9600.16384, pA = PROCESSOR_ARCHITECTURE_AMD64 (9), Culture neutral, VersionScope = 1 nonSxS, PublicKeyToken = , Type neutral, TypeName neutral, PublicKey neutral in the store, hash mismatch
Info CSI 00000a58 [SR] Cannot repair member file [l:22<11>]»mingliu.ttc» of Microsoft-Windows-Font-TrueType-MingLiU, Version = 6.3.9600.16384, pA = PROCESSOR_ARCHITECTURE_AMD64 (9), Culture neutral, VersionScope = 1 nonSxS, PublicKeyToken = , Type neutral, TypeName neutral, PublicKey neutral in the store, hash mismatch
С рабочей системы, или скачать в сети, у вас какой-то шрифт поврежден, вряд-ли это критично.
В данной статье описан метод ручного восстановления хранилища компонентов Windows. Подобные описанному в данном посте методу восстановления работоспособности компонентной модели рождаются вовсе не от хорошей жизни, появляются они под воздействием многочисленных проблем с компонентной моделью операционной системы. Во многих случаях официальные подходы к восстановлению хранилища компонентов не помогают, помимо этого отсутствует какая бы то ни было внятная официальная документация, из чего складывается недопонимание структуры и принципов работы компонентной модели. При подобном отношении со стороны разработчиков абсолютно любые средства вернуть компонентную модель в работоспособное состояние приемлемы!! Как показывает практика, при всех стараниях разработчиков из Microsoft предоставить возможность конечному пользователю системы устранять возникающие проблемы в автоматическом режиме (при помощи специальных утилит), никогда полностью не будут исключены ситуации, в которых эти самые автоматизированные средства будут давать сбои. Причина тут кроется в симбиозе старых механизмов операционной системы и необходимостью постоянного внедрения новых (не оттестированных) технологий, должным образом не заботясь о приведении в надлежащее состояние всех связанных (участвующих) компонентов, что, в свою очередь, порождает огромное количество проблем.
В данной публикации речь пойдет о восстановлении компонента прямой заменой файлов. Фактически методом предусматривается прямая ручная замена поврежденных [кривых, неправильно функционирующих] файлов, являющихся причиной возникновения ошибок, а так же частей реестра. По этой методике, исправные файлы и соответствующие ключи реестра копируются с работоспособной станции-донора. Слабое место метода в том, что для реализации требуется наличие находящейся на том же уровне обновлений нормально функционирующей операционной системы той же версии/ревизии.
В процессе повествования постараемся описать общую методику, тем не менее, в статье будут присутствовать частные случаи из практики.
Определение виновника проблемы
В этом разделе мы опишем принцип поиска битых файлов в составе иерархии каталогов компонентной модели, являющихся причиной возникновения сбоев. Так же попытаемся классифицировать все возможные источники информации о сбойных модулях.
Ошибки в лог-файлах
Основной и пожалуй самый информативный источник о проблемах, связанных с компонентной моделью Windows — лог-файлы системных утилит обслуживания. Чаще всего ошибки выявляются при выполнении обновления системы, то есть установки обновлений/исправлений. Проявляются они в виде разнообразных ошибочных статусов в интерфейсе Центра обновления и окон обновлений. Тем не менее, сам по себе статус не малоинформативен, а вот более детальная информация попадает в специализированные файлы журналов. В данном разделе мы опишем методики поиска источников проблем в лог-файлах результатов работы системных утилит SURT/DISM/SFC/SFCFix, которые работают с хранилищем компонентов и системными каталогами а предмет восстановления целостности компонентной модели системы.
CheckSUR.log / DISM.log
Правила поиска ошибок в файлах %Windir%LogsCBSCheckSUR.log или %Windir%LogsDISMDISM.log:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
================================= Checking System Update Readiness. Binary Version 6.1.7601.24499 2019—07—16 14:04 Checking Windows Servicing Packages Checking Package Manifests and Catalogs Checking Package Watchlist Checking Component Watchlist Checking Packages Checking Component Store (f) CSI Manifest Zero Length 0x00000000 winsxsManifestsx86_microsoft—windows—directx—direct3d11_31bf3856ad364e35_7.1.7601.16492_none_e2d7c9f5b7176f4e.manifest x86_microsoft—windows—directx—direct3d11_31bf3856ad364e35_7.1.7601.16492_none_e2d7c9f5b7176f4e (f) CSI Manifest Zero Length 0x00000000 winsxsManifestsamd64_microsoft—windows—ie—htmlrendering_31bf3856ad364e35_11.2.9600.17843_none_f5715a5c3755cc36.manifest amd64_microsoft—windows—ie—htmlrendering_31bf3856ad364e35_11.2.9600.17843_none_f5715a5c3755cc36 Summary: Seconds executed: 2948 Found 2 errors CSI Manifest Zero Length Total count: 2 Unavailable repair files: winsxsmanifestsx86_microsoft—windows—directx—direct3d11_31bf3856ad364e35_7.1.7601.16492_none_e2d7c9f5b7176f4e.manifest winsxsmanifestsamd64_microsoft—windows—ie—htmlrendering_31bf3856ad364e35_11.2.9600.17843_none_f5715a5c3755cc36.manifest |
Статусы (первый символ):
(f)
— фатальная ошибка;(w)
— предупреждение;(fix)
— указывает на ошибку, которая была исправлена; выводятся в виде отдельной строки сразу за строкой со статусом (f);
Оставшаяся часть строки содержит имя поврежденного файла и код ошибки.
В конце файла можно видеть секцию Unavailable repair files:, которая группирует все файлы, которые нужно будет заменять.
CBS.log
Несколько вариантов поиска ошибок в лог-файле %WinDir%LogsCBSCBS.log:
- Производим поиск строк, содержащих ключевое слово
Error
(с пробелом ДО или ПОСЛЕ). В их окружении можно найти указание на конкретные ошибки; - Выполняем команду
findstr /c:»[SR]» %windir%logscbscbs.log > c:sfcdetails.txt
в результате чего в корне диска C: будет создан файл
sfcdetails.txt
, включающий лишь строки исходного файла, содержащие префикс[SR]
(содержащие информацию об ошибках).
1: отсутствующие компоненты
. . . 2016—01—05 14:20:31, Info CSI 00001a68 [SR] Verifying 100 (0x0000000000000064) components 2016—01—05 14:20:31, Info CSI 00001a69 [SR] Beginning Verify and Repair transaction 2016—01—05 14:20:31, Info CSI 00001a6a [SR] Cannot repair member file [l:32{16}]«BRCI06UI.DLL.mui» of prnbr002.inf.Resources, Version = 6.1.7600.16385, pA = PROCESSOR_ARCHITECTURE_AMD64 (9), Culture = [l:10{5}]«ru-RU», VersionScope = 1 nonSxS, PublicKeyToken = {l:8 b:31bf3856ad364e35}, Type neutral, TypeName neutral, PublicKey neutral in the store, file is missing 2016—01—05 14:20:31, Info CSI 00001a6b [SR] Cannot repair member file [l:32{16}]«prnbr002.inf_loc» of prnbr002.inf.Resources, Version = 6.1.7600.16385, pA = PROCESSOR_ARCHITECTURE_AMD64 (9), Culture = [l:10{5}]«ru-RU», VersionScope = 1 nonSxS, PublicKeyToken = {l:8 b:31bf3856ad364e35}, Type neutral, TypeName neutral, PublicKey neutral in the store, file is missing 2016—01—05 14:20:31, Error CSI 00001a6c (F) STATUS_OBJECT_NAME_NOT_FOUND #28089837# from Windows::Rtl::SystemImplementation::DirectFileSystemProvider::SysCreateFile(flags = (AllowSharingViolation), handle = {provider=NULL, handle=0}, da = (SYNCHRONIZE|FILE_READ_ATTRIBUTES), oa = @0x195c7d0—>OBJECT_ATTRIBUTES {s:48; rd:NULL; on:[100]»??C:WindowsWinSxSamd64_prnbr002.inf_31bf3856ad364e35_6.1.7600.16385_none_49c93aa2c4304e9eAmd64″; a:(OBJ_CASE_INSENSITIVE)}, iosb = @0x195c7b0, as = (null), fa = 0, sa = (FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE), cd = FILE_OPEN, co = (FILE_SYNCHRONOUS_IO_NONALERT|0x00004000), eab = NULL, eal = 0, disp = Invalid) 2016—01—05 14:20:31, Error CSI 00001a6d@2016/1/5:10:20:31.885 (F) d:win7sp1_gdrbasewcpsilmergedntuntsystem.cpp(2057): Error STATUS_OBJECT_NAME_NOT_FOUND originated in function Windows::Rtl::SystemImplementation::DirectFileSystemProvider::SysCreateFile expression: (null) 2016—01—05 14:20:31, Error CSI 00001a6e (F) STATUS_OBJECT_NAME_NOT_FOUND #28089836# from Windows::Rtl::SystemImplementation::CDirectory::OpenExistingDirectory(...)[gle=0xd0000034] 2016—01—05 14:20:31, Error CSI 00001a6f (F) STATUS_OBJECT_NAME_NOT_FOUND #28089835# from Windows::Rtl::SystemImplementation::CDirectory_IRtlDirectoryTearoff::OpenExistingDirectory(flags = 0, da = (SYNCHRONIZE), oa = @0x195d0e0—>SIL_OBJECT_ATTRIBUTES {s:40; on:»Amd64″; a:(OBJ_CASE_INSENSITIVE)}, sa = (FILE_SHARE_READ|FILE_SHARE_WRITE), oo = (FILE_DIRECTORY_FILE|FILE_SYNCHRONOUS_IO_NONALERT|FILE_OPEN_FOR_BACKUP_INTENT), dir = NULL, disp = (null)) . . . |
В обрамлении видно строки, содержащие ключевые слова Cannot repair member file.. указывающие на то, что:
- содержимое файла не соответствует содержимому хранилища для файла и WRP пытается его восстановить, тем не менее..
- ..WRP не может восстановить файл описанного в строке компонента, потому что записи в реестре о нем присутствуют, а вот сам файл отсутствует в хранилище, о чем недвусмысленно намекает фрагмент строки ..file is missing.
Ниже по тексту можно найти статус STATUS_OBJECT_NAME_NOT_FOUND, указывающий на отсутствие подкаталога. В нашем случае, как видно из отчета, повреждению подверглась целая иерархия компонента, состоящая из подкаталогов и файлов, размещавшаяся в каталоге C:WindowsWinSxSamd64_prnbr002.inf_31bf3856ad364e35_6.1.7600.16385_none_49c93aa2c4304e9e. Заглянув в целевой каталог, я убедился, что он действительно пуст, а вот что за событие/действие удалило его содержимое, остается только гадать, хотя подобные инциденты в Windows-системах сплошь и рядом.
2: отсутствие манифеста
. . . 2019—05—27 14:32:54, Info CSI 000004f9 Looking for manifest in Backup Dir... 2019—05—27 14:32:54, Error CSI 000004fa (F) Unable to load manifest for component [ml:280{140},l:186{93}]«wow64_microsoft-windows-directshow-core_31bf3856ad364e35_6.1.7601.24382_none_0f268a5b523efde9»[gle=0x80004005] 2019—05—27 14:32:54, Error CSI 000004fb@2019/5/27:11:32:54.653 (F) d:w7rtmbasewcpcomponentstorestorelayout.cpp(2712): Store corruption detected in function ComponentStore::CRawStoreLayout::FetchManifestContent expression: 0 FileHashMismatch on resource [120]«winsxsmanifestswow64_microsoft-windows-directshow-core_31bf3856ad364e35_6.1.7601.24382_none_0f268a5b523efde9.manifest»[gle=0x80004005] 2019—05—27 14:32:56, Error CSI 000004fc (F) STATUS_SXS_COMPONENT_STORE_CORRUPT #1525870# from CCSDirectTransaction::OperateEnding at index 6 of 185 (0x00000000000000b9) operations, disposition 0[gle=0xd015001a] 2019—05—27 14:32:56, Error CSI 000004fd (F) HRESULT_FROM_WIN32(14098) #1496294# from Windows::ServicingAPI::CCSITransaction::ICSITransaction2_AddComponents(Flags = 4, a = @0x1b50440, mp = @0x1b50c40, disp = 0)[gle=0x80073712] 2019—05—27 14:32:56, Info CBS Failed to add one or more component [HRESULT = 0x80073712 — ERROR_SXS_COMPONENT_STORE_CORRUPT] 2019—05—27 14:32:56, Error CBS Failed to complete component closure [HRESULT = 0x80073712 — ERROR_SXS_COMPONENT_STORE_CORRUPT] 2019—05—27 14:32:56, Info CSI 000004fe@2019/5/27:11:32:56.806 CSI Transaction @0x8abb930 destroyed 2019—05—27 14:32:56, Info CBS Perf: Resolve chain complete. 2019—05—27 14:32:56, Info CBS Failed to resolve execution chain. [HRESULT = 0x80073712 — ERROR_SXS_COMPONENT_STORE_CORRUPT] 2019—05—27 14:32:56, Error CBS Failed to process single phase execution. [HRESULT = 0x80073712 — ERROR_SXS_COMPONENT_STORE_CORRUPT] 2019—05—27 14:32:56, Info CBS WER: Generating failure report for package: Package_for_RollupFix~31bf3856ad364e35~amd64~~7601.24443.1.8, status: 0x80073712, failure source: Resolve, start state: Absent, target state: Installed, client id: WindowsUpdateAgent 2019—05—27 14:32:56, Info CBS Failed to query DisableWerReporting flag. Assuming not set... [HRESULT = 0x80070002 — ERROR_FILE_NOT_FOUND] . . . |
Ключевые слова, на которые в данном случае стоит обращать внимание:
- Manifest hash for component .. does not match expected value.
- Unable to load manifest for component ..
Из чего следует, что в данном случае возникла проблема с файлом wow64_microsoft-windows-directshow-core_31bf3856ad364e35_6.1.7601.24382_none_0f268a5b523efde9.manifest, который является манифестом и располагается в поддиректории %SystemRoot%WinSxSManifests. При более близком изучении было выяснено, что указанный файл почему-то нулевой.
3: попытка удаления отсутствующего компонента
При попытках установки обновления безопасности мы можем столкнуться со следующей проблемой:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
. . . 2019—05—28 12:20:09, Info CBS Exec: Unprojecting Package: Package_820_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3, Update: 4019265—2871_neutral_LDR, UninstallDeployment: amd64_006f1bee347aa0a86984388c82ccb379_31bf3856ad364e35_6.1.7601.23529_none_4683d079b6ce11b3 2019—05—28 12:20:09, Info CBS Exec: Uninstalling Package: Package_846_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3 2019—05—28 12:20:09, Info CBS Exec: Uninstalling Package: Package_846_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3, Update: 4019265—2966_neutral_LDR 2019—05—28 12:20:09, Info CBS Exec: Unprojecting Package: Package_846_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3, Update: 4019265—2966_neutral_LDR, UninstallDeployment: amd64_0f4370f0564ad69cbf1c9624ac455552_31bf3856ad364e35_7.6.7601.23775_none_3e0e14d4d5b6573f 2019—05—28 12:20:09, Error CBS Failed. Attempted to uninstall a version of a non—driver component that is not installed, version: 0X700061db15cdf, component: amd64_microsoft—windows—w..lient—aux.resources_31bf3856ad364e35_7.6.7601.23775_ru—ru_306f57c17eac5f89, owner: Package_846_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3.4019265—2966_neutral_LDR [HRESULT = 0x80004005 — E_FAIL] 2019—05—28 12:20:09, Info CBS Failed to mergecomponent [HRESULT = 0x80004005 — E_FAIL] 2019—05—28 12:20:09, Info CBS ComponentAnalyzerUninstallDeployment: Failed on update: 4019265—2966_neutral_LDR [HRESULT = 0x80004005 — E_FAIL] 2019—05—28 12:20:09, Info CBS Failed to execute item[0] in Package: Package_846_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3, Update: 4019265—2966_neutral_LDR [HRESULT = 0x80004005 — E_FAIL] 2019—05—28 12:20:09, Info CBS Failed to execute execution update. [HRESULT = 0x80004005 — E_FAIL] 2019—05—28 12:20:09, Info CBS Failed to execute execution package: Package_846_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3 [HRESULT = 0x80004005 — E_FAIL] 2019—05—28 12:20:09, Info CBS Failed to prepare execution [HRESULT = 0x80004005 — E_FAIL] 2019—05—28 12:20:09, Info CSI 00000016@2019/5/28:09:20:09.916 CSI Transaction @0x1b71940 destroyed 2019—05—28 12:20:09, Info CBS Perf: InstallUninstallChain complete. 2019—05—28 12:20:09, Info CBS Failed to execute execution chain. [HRESULT = 0x80004005 — E_FAIL] 2019—05—28 12:20:09, Error CBS Failed to process single phase execution. [HRESULT = 0x80004005 — E_FAIL] 2019—05—28 12:20:09, Info CBS WER: Generating failure report for package: Package_for_RollupFix~31bf3856ad364e35~amd64~~7601.24443.1.8, status: 0x80004005, failure source: Execute, start state: Staged, target state: Installed, client id: WindowsUpdateAgent 2019—05—28 12:20:09, Info CBS Failed to query DisableWerReporting flag. Assuming not set... [HRESULT = 0x80070002 — ERROR_FILE_NOT_FOUND] 2019—05—28 12:20:10, Info CBS Failed to add %windir%winsxspending.xml to WER report because it is missing. Continuing without it... 2019—05—28 12:20:10, Info CBS Failed to add %windir%winsxspending.xml.bad to WER report because it is missing. Continuing without it... 2019—05—28 12:20:10, Info CBS Reboot mark refs: 0 . . . |
Судя по всему установщик ругается на попытку удаления отсутствующего компонента amd64_microsoft-windows-w..lient-aux.resources_31bf3856ad364e35_7.6.7601.23775_ru-ru_306f57c17eac5f89 из пакета Package_846_for_KB4019265~31bf3856ad364e35~amd64~~6.1.1.3.4019265-2966_neutral_LDR. Сам компонент оказался на месте вместе со собственным манифестом, поэтому не понятно что же не нравится стеку обслуживания. Тем не менее что-то с этим пакетом явно не так.
Окна ошибок в интерфейсе
Часто ошибки наблюдаются пользователем визуально, в виде статусов ошибок в окне Центра обновления Windows, но иногда их можно увидеть в автономных информационных окнах. Например, отказ запуска множества исполняемых системных образов может выражаться в постоянно всплывающих окнах, в заголовке которых можно видеть «<имя_образа> (в контексте которого произошел сбой) — ошибочный образ», а в информационной части текст ошибки: X:XXXXXXxxxxxxxx.dll либо не предназначен для выполнения под управлением Windows или содержит ошибку. Попробуйте переустановить программу с помощью исходного установочного носителя или обратитесь к системному администратору или поставщику программного обеспечения за поддержкой:
В английских версиях в заголовке можно увидеть «<filename> — bad image», а описание звучит как: «<filename> is either not designed to run on Windows or it contains an error. Try installing the program again using the original installation media or contact your system administrator or the software vendor for support.» Часто сообщение в окне дополняется специфической деталью сбоя, например кодом ошибки: «Error status 0xc000012f».
Данный класс ошибок имеет множество специфических особенностей, однако мы будем разбирать их в контексте (исключительно) повреждения системных библиотек, то есть метод сложно применим к различного рода сторонним приложениям, в которых аналогичные проблемы запуска связаны с основным исполняемым файлом и внутренними библиотеками приложения. Исходя из этого, метод нельзя отнести к универсальным.
В данном случае, как вы можете видеть на снимке экрана выше, у нас повреждена библиотека с именем ncrypt.dll, относительно неё мы и поведем дальнейшее повествование.
Тем не менее, в ваших случаях для выявления виновника сбоя потребуется исследовать лог-файл %WinDir%LogsCBSCBS.log и составить список проблемных файлов. И при не столь очевидных намеках на источник проблемы всегда начинайте исследование сбоя с анализа данного лог-файла.
Восстановление файлов
На предыдущем шаге мы определились в виновником ошибки, то есть определили имена поврежденных/удаленных файлов:
- Если мы наблюдаем ошибку в виде информационного окна в графическом интерфейсе, то виновником обычно является модуль, имя которого фигурирует в тексте (в примере выше: ncrypt.dll). В этом случае мы будем менять все без исключения ревизии проблемного файла;
- Если мы производим разбор лог-файлов отчетов сервисных утилит (CBS/DISM/CheckSur/SFCFix), то виновник(и) проблемы обычно предстают перед нами в виде списка конкретных файлов компонентов или обновлений;
Давайте в этом разделе опишем метод восстановления компонента прямой заменой файлов подробнее, разбив весь процесс на подразделы, подробно описывающие шаги.
Поиск рабочих экземпляров файлов
На этом этапе нам необходимо найти рабочие копии поврежденных или отсутствующих файлов. Существует несколько основных подходов по нахождению рабочих копий:
- Скопировать файлы с аналогичной, полностью работоспособной системы той же версии/редакции:
- при помощи поиска (в проводнике, или любым специализированным средством типа Far/Total Commander) по системному разделу (обычно C:) находим все каталоги, содержащие в своем названии искомую маску/имя (для случая выше: *ncrypt*). Сокращенный вывод:
. . .
C:Windowswinsxsx86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24417_none_6072150268f96612
C:Windowswinsxsamd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18741_none_bbe0d7630856b4a1
C:Windowswinsxsx86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24408_none_607de53868f06378
C:Windowswinsxsamd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18812_none_bc024957083d774c
C:Windowswinsxsx86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24387_none_602663a869322c82
C:Windowswinsxsamd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18869_none_bbd33bc1085fb462
C:Windowswinsxsx86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24384_none_602362ca6934e07d
C:Windowswinsxsamd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18923_none_bbf87b9b0844a9bb
C:Windowswinsxsx86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24357_none_6046d36c6919d8af
C:Windowswinsxsamd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18933_none_bbedabaf084cc5ac
C:Windowswinsxsx86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24335_none_605a72b0690b6e1f
C:Windowswinsxsamd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18939_none_bbf3ad6b08475db6
. . .
Соответственно, в найденных директориях располагаются и подпадающие под маску файлы (ncrypt.dll). Как можно увидеть по именам каталогов, они предназначаются для хранения различных ревизий компонента, включающего в себя файл ncrypt.dll. Но определить точно какая именно ревизия используется тем или иным приложением сложно, поскольку используются обычно сразу несколько ревизий.
Можно произвести замену файлов и в системных каталогах, таких как C:Windowssystem32. Хотя делать это не обязательно, поскольку файлы там представляет собой жесткие ссылки на оригиналы в хранилище WinSxS, а они восстанавливаются автоматически при проверке через sfc).
- в ходе того же самого поиска, кроме директорий, выявляются и файлы, которые располагаются по следующим путям (вывод сокращен):
. . .
C:WindowswinsxsManifestsamd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24408_none_bc9c80bc214dd4ae.manifest
C:WindowswinsxsManifestsx86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18741_none_5fc23bdf4ff9436b.manifest
C:WindowswinsxsManifestsamd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24387_none_bc44ff2c218f9db8.manifest
C:WindowswinsxsManifestsx86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18812_none_5fe3add34fe00616.manifest
C:WindowswinsxsManifestsamd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24384_none_bc41fe4e219251b3.manifest
C:WindowswinsxsManifestsx86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18869_none_5fb4a03d5002432c.manifest
C:WindowswinsxsManifestsamd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24357_none_bc656ef0217749e5.manifest
C:WindowswinsxsManifestsx86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18923_none_5fd9e0174fe73885.manifest
C:WindowswinsxsManifestsamd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24335_none_bc790e342168df55.manifest
C:WindowswinsxsManifestsx86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18933_none_5fcf102b4fef5476.manifest
C:WindowswinsxsManifestsamd64_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.24308_none_bc9c7ed6214dd787.manifest
C:WindowswinsxsManifestsx86_microsoft—windows—ncrypt—dll_31bf3856ad364e35_6.1.7601.18939_none_5fd511e74fe9ec80.manifest
. . .
- Разархивировать требуемые файлы из пакета обновления.
- Для этого определяем имя обновления KBXXXXXXXX, в состав которого входят обнаруженные на предыдущем шаге файлы, из Центра загрузок Майкрософт или Центра обновления Майкрософт или попросту используя поиск.
- Распаковываем содержимое выкачанного только что пакета обновления (.msu) в произвольную (временную) директорию:
expand -F:* windows6.1-kb4019265-x64_c21fb9314da54cf6bd7972581da3159535f55aec.msu c:temp4019265
- после чего в целевой директории мы увидим следующее содержимое:
- .xml-файл — метаданные-описатели пакета обновления (.msu). Утилиты установки используют .xml-файл при выполнении установки в автоматическом режиме;
- .cab-файл — архив с данными (полезная нагрузка) обновления;
- *-pkgProperties.txt — файл с описанием свойств пакета (дата релиза, архитектура, тип, ссылка на KB и прочее);
- WSUSSCAN.cab — файл оффлайн-сценария проверки;
- затем выполняем еще одну команду, теперь уже над только что распакованным .cab-файлом:
expand -F:* windows6.1-kb4019265-x64.cab c:temp4019265extracted
- после этого необходимые нам для замены файлы будут располагаться в директории c:temp4019265extracted
Установка безопасности для каталогов/файлов
В операционных системах Windows директория компонентной модели WinSxS (и вложенные в неё объекты) защищены на уровне разрешений файловой системы. Поэтому следующим шагом нам потребуется взять владение каталогов WinSxS для собственной учетной записи (под которой выполняете восстановление), затем выставить полные разрешения для этой учетной записи, а далее применить их для всех вложенных папок/файлов.
Выполнять приведенные здесь действия следует из-под учетной записи с правами локального Администратора (с эскалацией привилегий).
Сделать это можно двумя способами:
- Через проводник. Нажимаем правую клавишу мыши на директории WinSxS — пункт Свойства — вкладка Безопасность — кнопка Дополнительно — вкладка Владелец — кнопка Изменить — ставим курсор на нужного нам пользователя, активируем чекбокс Заменить владельца подконтейнеров и объектов — жмем кнопку Применить. После окончания процесс закрываем все открытые окна через кнопку OK, повторно жмем правую клавишу мыши на директории WinSxS — вкладка Безопасность — во фрейме Группы и пользователи кнопка Изменить — выделяем курсором группу Администраторы — ставим разрешения Изменение и Запись;
- Через командную строку. Из командной строки (cmd) выполняем следующие команды:
takeown /f c:windowswinsxs*
даем группе Администраторы (в которую, я надеюсь, включена ваша учетная запись) полный доступ к целевому файлу, для этого выполняем следующую команду:
icacls c:windowswinsxs* /GRANT АДМИНИСТРАТОРЫ:F
Копирование каталогов/файлов
И последним шагом выполняется непосредственно копирование (с заменой) с донорской (исправной) системы на целевую (проблемную) содержимого всех обнаруженных на предыдущих шагах каталогов и файлов, не забывайте так же и .manifest-файлы.
Что именно мы копируем:
- Если присутствуют пара
.cat
или.mum
файлов компонента, то скопировать их в каталог %WinDir%servicingPackages (с донора на цель). Копировать именно всю пару, даже если поврежден всего-лишь один из них (и один из них отображается в лог-файле); - Если к паре
.cat
/.mum
файлов присутствует еще и.ses
-файл, то копируем и его; - Если присутствуют одноименные манифесты (
.manifest
-файл(ы)) компонента, то скопировать их в каталог %WinDir%WinSxSManifests (с донора на цель); - Если присутствуют остальные подкаталоги/файлы компонента, то скопировать их в каталог компонента %WinDir%WinSxSимя_компонента (c донора на цель);
- Если присутствуют файлы в директории C:WindowsSystem32, то можно скопировать и их (с донора на цель). Хотя делать это и не обязательно, поскольку жесткие ссылки восстанавливаются при проверках через sfc;
Производить операции копирования файлов (во избежание блокировок на работающей системе) можно при помощи любого загрузочного LiveCD, предварительно скопировав все переносимые файлы на флешку (или любой иной носитель). Выполнять же само копирование можно как при помощи командной строки, так и выполнить перемещение с помощью проводника Windows.
Восстановление реестра
Обычно файловых исправлений бывает достаточно для того, что бы устранить ошибки в компонентной модели Windows, соответственно, исправить ошибки, происходящие в процессе установки обновлений. Тем не менее, бывают случаи, когда повреждается еще и реестровая часть компонента, тогда требуется производить дополнительные действия по восстановлению:
- Запустить командную строку (cmd);
- Подключить динамический куст реестра HKLMCOMPONENTS командой:
reg load HKLMCOMPONENTS C:WINDOWSSYSTEM32CONFIGCOMPONENTS
если выскакивает ошибка:
процесс не может получить доступ к файлу, так как этот файл занят другим процессом.
то куст уже подключен.
- Запустить редактор реестра regedit;
- В открывшемся окне нажать Ctrl+F и ввести имя компонента, который вы восстанавливали на предыдущем шаге;
- В случае отсутствия каких либо записей реестра, выполнить импортирование соответствующих записей реестра о компоненте с рабочей машины;
- Выполнить команду:
reg unload HKLMCOMPONENTS
- выполнить перезагрузку операционной системы;
Всякий раз, когда что-то идет не так с компьютером или ноутбуком, есть ряд инструментов для устранения неполадок, которые вы можете выполнить, чтобы попытаться устранить проблему. В Windows 10/8/7 есть несколько встроенных команд, которые можно использовать для проверки и восстановления поврежденных системных файлов, которые со временем вызывают проблемы при изменении.
Одним из способов устранения неполадок, связанных с Windows, является проверка системы и восстановление системных файлов. Это может помочь во всех типах проблем, таких как медленная система, синий экран смерти, внезапные сбои питания и сбои системы.
SFC и DISM — Средство проверки системных файлов, которое сканирует компьютер на предмет любого повреждения или изменений в системных файлах, которые в противном случае могли бы помешать нормальной работе вашего ПК. Инструменты заменяет файл правильной версией, чтобы обеспечить бесперебойную работу. С помощью командной строки можно попытаться сканировать и восстановить системные файлы поздних операционных систем, как Windows 10/8/7 /Vista.
Проверка и Восстановление системных файлов
Чтобы правильно и корректно проверить и восстановить системные файлы в Windows 10, запустите командную строку от имени администратора и введите ниже команды по очереди:
chkdsk c: /f /r
sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth
Ниже разберем более подробно команды, что делать с ошибками при вводе команд, как использовать SFC и DISM из образа и дополнительных параметров и, как прочесть файл CBS.log, когда появляется ошибка «Программа защиты ресурсов Windows обнаружила поврежденные файлы и не смогла восстановить. Подробные сведения в файле CBS.Log, который находится по пути: C:WindowsLogsCBSCBS.log«.
1. Использование инструмента System File Checker (SFC)
Запустите командную строку (CMD) от имени администратора. Нажмите «поиск» и напишите просто «cmd» или «командная строка», далее по ней правой кнопкой мыши и запуск от имени админа.
Задайте ниже команду и дождитесь окончания процесса:
sfc /scannow
Примечание: После сканирования вашей системы будет выдан один из трех результатов:
- Ошибок системных файлов не будет.
- Будут ошибки системных файлов и Windows восстановит их автоматически.
- Windows обнаружила ошибки, но не может восстановить некоторые из них.
Если у вас показывает вариант 3, что ошибка обнаружена и система не может восстановить, то загрузитесь в безопасном режиме и проделайте заново процедуру. Советую отключить шифрование EFS и Bitlocker, если они были включены. Если SFC все ровно не смог восстановить файлы, то попробуйте ниже способ через дополнительные параметры и прибегните к способу 2 (DISM).
Запуск SFC через дополнительные параметры
Если инструмент SFC не смог восстановить системный файл, значит может быть, что он работают в данный момент и инструмент не сможет его заменить на новый. В данном случае, придется загрузиться в дополнительные параметры и запустить командную строку.
- Откройте «Параметры» > «Обновления и безопасность» > «Восстановление«.
- Справа найдите «Особые варианты загрузки» и нажмите «Перезагрузить сейчас».
В дополнительных параметрах перейдите «Поиск и устранение неисправностей» > «Дополнительные параметры» > «Командная строка».
Далее задайте команду:
sfc /scannow /offbootdir=C: /offwindir=C:Windows
2. Использование инструмента Deployment Image and Service Management (DISM)
Если вышеуказанное не работает, есть один последний способ проверить повреждение в системных файлах и исправить их. Используем инструмент Deployment Image and Service Management (DISM). Команда работает с системами Windows 8/8.1/10. Откройте обратно командную строку от имени администратора и используйте следующую команду:
DISM /ONLINE /CLEANUP-IMAGE /RESTOREHEALTH
Процесс может занять длительное время с зависанием процентной шкалы. Закончив работу, перезагрузите компьютер и запустите обратно sfc /scannow, чтобы убедиться, что ошибок нет или ошибка пропала.
Запуск DISM из образа Windows
Если выше команда DISM выдает ошибку повреждения компонентов хранилища, то можно восстановить файлы из ISO образа. Смонтируйте ISO образ Windows 10 в проводнике.
Примечание: Лучше, чтобы версия, язык и архитектура монтируемого образа, совпадала с текущей Windows 10, которая установлена.
Далее введите ниже команду и замените букву I на подключаемый образ. Откройте проводник (этот компьютер) и посмотрите букву диска.
DISM /Online /Cleanup-Image /RestoreHealth /Source:I:Sourcesinstall.esd
Анализ лога CBS, какие файлы не удалось восстановить
Если после сканирования системных файлов, программа защиты ресурсов Windows обнаружила поврежденные файлы, но не может восстановить некоторые из них, лог файл CBS может помочь определить, какие именно файлы повреждены. Для этого:
- Перейдите по пути C:WindowsLogsCBS
- Откройте файл CBS.log в блокноте или текстовом редакторе
- В блокноте нажмите Ctrl+F, чтобы вызвать поиск
- В поиске напишите Cannot repair member file, чтобы найти файлы, которые не удается восстановить
- Если поиск не дал результатов, то найдите записи [SR] и вы обнаружите, что все они одинаковы 100 components
- Ищите листая вручную любые изменения, отличные от 100 components, где вы и найдете поврежденный файл или указание
- Ориентируетесь по времени, когда вы примерно запускали сканирование SFC, так как лог может быть и за вчерашний день
Примечание: Лог журнала DISM находятся по пути C:WindowsLogsDISM (dism.log).
Смотрите еще:
- Не работает кнопка Пуск в Windows 10?
- Почему Пропал и Не Работает Звук в Windows 10?
- 9 Причин Почему Компьютер с Windows Зависает
- Диск загружен на 100% в диспетчере задач Windows 10
- Ускоренная загрузка windows, настройка windows для быстрой работы
[ Telegram | Поддержать ]