Ошибки 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:WindowsLogsCBS

Там вы увидите имя файла CBS.log. Это тот самый файл, который содержит информацию о Windows Update.
Как прочитать файл CBS.log
Вы можете просто открыть его с помощью Блокнота.
C:WindowsLogsCBS

Однако если вы хотите просто прочитать файл SFC, это не лучший вариант.
Для этого запустите Командную строку с правами администратора, введите следующую команду и нажмите Enter.
findstr /c:"[SR]" %windir%LogsCBSCBS.log >"%userprofile%Desktopsfclogs.txt
Это создаст файл sfclogs.txt на рабочем столе. Дважды щелкните по нему, чтобы открыть файл с помощью Блокнота, и прочитайте его. Вы увидите, что перед каждой транзакцией написано «SR». Это означает, что все показанные здесь программы относятся к SFC.exe.
Могу ли я удалить файл CBS.log?
Файл CBS.log необходим для вашего компьютера, поскольку каждый раз, когда вы устанавливаете новое обновление Windows, оно записывается в файл CBS.log. Однако если вам кажется, что он съедает огромный кусок вашего жесткого диска, то можете удалить его, так как это не окажет негативного влияния на ваш компьютер.
Перед этим обязательно отключите службу Windows Update.
Теперь вы можете удалить файл CBS.log, и вы не получите никакого сообщения об ошибке.
Поврежденные файлы регистрируются в журнале CBS.log
В некоторых Windows может возникнуть ошибка следующего содержания
Защита ресурсов Windows обнаружила поврежденные файлы, но не смогла исправить некоторые из них. Подробности содержатся в журнале CBS.Log windirLogsCBSCBS.log.
Чтобы исправить эту проблему, вам может потребоваться запустить DISM.
Спасибо, что читаете! На данный момент большинство моих заметок, статей и подборок выходит в telegram канале «Левашов». Обязательно подписывайтесь, чтобы не пропустить новости мира ИТ, полезные инструкции и нужные сервисы.
Респект за пост! Спасибо за работу!
Хотите больше постов в блоге? Подборок софта и сервисов, а также обзоры на гаджеты? Сейчас, чтобы писать регулярно и радовать вас большими обзорами, мне требуется помощь. Чтобы поддерживать сайт на регулярной основе, вы можете оформить подписку на российском сервисе Boosty. Или воспользоваться ЮMoney (бывшие Яндекс Деньги) для разовой поддержки:
Заранее спасибо! Все собранные средства будут пущены на развитие сайта. Поддержка проекта является подарком владельцу сайта.
Windows 8.1 Windows 8.1 Enterprise Windows 8.1 Pro Windows 8 Windows 8 Enterprise Windows 8 Pro Windows 7 Enterprise Windows 7 Home Basic Windows 7 Home Premium Windows 7 Professional Windows 7 Starter Windows 7 Ultimate Windows Vista Enterprise 64-bit Edition Windows Vista Ultimate 64-bit Edition Windows Vista Business Windows Vista Business 64-bit Edition Windows Vista Enterprise Windows Vista Ultimate Windows 10 Еще…Меньше
Если некоторые функции Windows не работают или Windows завершает работу, используйте средство проверки системных файлов для сканирования Windows и восстановления файлов.
Несмотря на то, что приведенные ниже шаги могут показаться сложными на первом этапе, просто выполните их по порядку, и мы попробуем помочь вам.
Запуск средства проверки системных файлов (SFC.exe)
выполнив указанные ниже действия.
-
Откройте командную строку с повышенными привилегиями. Для этого выполните указанные ниже действия, в зависимости от версии операционной системы:
-
Пользователям Windows 10, Windows 8.1 или Windows 8 перед запуском средства проверки системных файлов нужно запустить систему обслуживания образов развертывания и управления ими (DISM). (Если на вашем компьютере установлена система Windows 7 или Windows Vista, перейдите сразу к шагу 3.)
Введите следующую команду и нажмите клавишу ВВОД. Выполнение команды может занять несколько минут.
DISM.exe /Online /Cleanup-image /Restorehealth
Важно! При запуске этой команды DISM обращается к Центру обновления Windows, чтобы получить файлы для устранения повреждений. Но если поврежден клиент Центра обновления Windows, используйте работающий экземпляр Windows в качестве источника восстановления либо параллельную папку Windows из сетевого расположения или со съемного носителя, например DVD-диска Windows, в качестве источника файлов. Для этого введите в командной строке такую команду:
DISM.exe /Online /Cleanup-Image /RestoreHealth /Source:C:RepairSourceWindows /LimitAccess
Примечание. Вместо заполнителя C:RepairSourceWindows укажите расположение вашего источника восстановления. Дополнительные сведения об использовании средства DISM для восстановления Windows см. в статье Восстановление образа Windows.
-
Введите в командной строке приведенную ниже команду и нажмите клавишу ВВОД:
sfc /scannow
Команда sfc /scannow проверит все защищенные системные файлы и заменит поврежденные файлы их кэшированной копией, расположенной в сжатой папке по адресу %WinDir%System32dllcache.
Заполнитель %WinDir% представляет собой папку операционной системы Windows. Например, C:Windows.
Примечание. Не закрывайте это окно командной строки, пока проверка не завершится на 100 %. Результаты проверки будут показаны после завершения данного процесса.
-
После завершения процесса проверки на экране может появиться одно из приведенных ниже сообщений:
-
Защита ресурсов Windows не обнаружила нарушений целостности.
Это значит, что отсутствующие и поврежденные системные файлы не обнаружены. -
Защита ресурсов Windows не может выполнить запрошенную операцию.
Для устранения этой проблемы выполните сканирование с помощью средства проверки системных файлов в безопасном режиме, убедитесь, что папки PendingDeletes и PendingRenames находятся в папке %WinDir%WinSxSTemp. -
Защита ресурсов Windows обнаружила поврежденные файлы и успешно их восстановила. Сведения см. в журнале CBS.Log %WinDir%LogsCBSCBS.log.
Для просмотра подробных сведений о сканировании и восстановлении системных файлов перейдите к разделу Как просмотреть подробные сведения процесса работы средства проверки системных файлов. -
Защита ресурсов Windows обнаружила поврежденные файлы, но не может восстановить некоторые из них. Сведения см. в журнале CBS.Log %WinDir%LogsCBSCBS.log.
Для восстановления поврежденных файлов вручную просмотрите подробные сведения процесса работы средства проверки системных файлов, чтобы найти поврежденный файл, а затем вручную заменить поврежденный файл гарантировано работоспособной копией.
-
Проведите пальцем от правого края экрана к центру и коснитесь кнопки Поиск. Либо, если вы используете мышь, переместите указатель в правый нижний угол экрана и щелкните кнопку Поиск. Введите запрос Командная строка в поле Поиск, щелкните правой кнопкой мыши элемент Командная строка, затем выберите команду Запуск от имени администратора. Если система запросит пароль администратора или подтверждение, введите пароль или нажмите кнопку Разрешить.
Для этого нажмите кнопку Пуск, введите запрос Командная строка или cmd в поле Поиск, щелкните правой кнопкой мыши элемент Командная строка, а затем выберите команду Запуск от имени администратора. При получении запроса на ввод пароля администратора или подтверждения введите пароль или нажмите кнопку Разрешить.
Дополнительная информация
Просмотр подробных сведений о процессе работы средства проверки системных файлов.
Чтобы ознакомиться с подробными сведениями, включенными в файл CBS.Log, вы можете скопировать сведения в файл Sfcdetails.txt с помощью команды Findstr, а затем просмотреть их в этом файле. Для этого выполните указанные ниже действия.
-
Откройте командную строку с повышенными привилегиями, как это описано на шаге 1.
-
Введите в командной строке приведенную ниже команду и нажмите клавишу ВВОД:
findstr /c:"[SR]" %windir%LogsCBSCBS.log >"%userprofile%Desktopsfcdetails.txt"
Примечание. В файле Sfcdetails.txt содержатся сведения о каждом запуске средства проверки системных файлов на компьютере. Он также содержит информацию о файлах, которые не были исправлены средством проверки системных файлов. Проверьте дату и время записей, чтобы определить проблемные файлы, обнаруженные при последнем запуске средства проверки системных файлов.
-
Откройте файл Sfcdetails.txt на рабочем столе.
-
В файле Sfcdetails.txt используется следующий формат:
Сведения о дате и времени SFC
В следующем примере файла журнала содержится запись для одного файла, который не удалось исправить:2007-01-12 12:10:42, Info CSI 00000008 [SR] Cannot
repair member file [l:34{17}]»Accessibility.dll» of Accessibility, Version =
6.0.6000.16386, pA = PROCESSOR_ARCHITECTURE_MSIL (8), Culture neutral,
VersionScope neutral, PublicKeyToken = {l:8 b:b03f5f7f11d50a3a}, Type
neutral, TypeName neutral, PublicKey neutral in the store, file is missing
Как вручную заменить поврежденный системный файл гарантированно работоспособной копией файла.
После определения, какой системный файл поврежден и не может быть восстановлен, с помощью подробных сведений в файле Sfcdetails.txt, выясните расположение поврежденного файла, затем вручную замените поврежденный файл его гарантировано работоспособной копией. Для этого выполните указанные ниже действия.
Примечание. Гарантировано работоспособную копию системного файла можно взять с другого компьютера, на котором установлена такая же, как на вашем компьютере версия Windows. Чтобы убедиться в работоспособности системного файла, который вы планируете скопировать на другом компьютере, можно провести процесс проверки средством проверки системных файлов.
-
Распространите на поврежденный системный файл права собственности администратора. Для этого скопируйте, а затем вставьте (или введите) в командную строку с повышенными привилегиями приведенную ниже команду, затем нажмите клавишу ВВОД:
takeown /f Путь_и_имя_файла
Примечание. Заполнитель Путь_и_имя_файла представляет собой путь и имя файла для поврежденного файла. Например, введите takeown /f C:windowssystem32jscript.dll.

-
Предоставьте администраторам полный доступ к поврежденному системному файлу. Для этого скопируйте и вставьте (или введите) приведенную ниже команду и нажмите клавишу ВВОД:
icacls Путь_и_имя_файла /GRANT ADMINISTRATORS:F
Примечание. Заполнитель Путь_и_имя_файла представляет собой путь и имя файла для поврежденного файла. Например, введите icacls C:windowssystem32jscript.dll /grant administrators:F.
-
Замените поврежденный системный файл гарантировано работоспособной копией файла. Для этого скопируйте и вставьте (или введите) приведенную ниже команду и нажмите клавишу ВВОД:
Copy Исходный_файл Расположение
Примечание. Заполнитель Исходный_файл представляет собой путь и имя гарантировано работоспособной копии файла на вашем компьютере, а заполнитель Расположение представляет собой путь и имя поврежденного файла. Например, введите copy E:tempjscript.dll C:windowssystem32jscript.dll.
Если описанные выше действия не помогли, возможно, потребуется переустановить Windows. Дополнительные сведения см . в разделе Варианты восстановления Windows10.
Нужна дополнительная помощь?
В данной статье описан метод ручного восстановления хранилища компонентов 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
- выполнить перезагрузку операционной системы;