На устранение проблемы у меня ушло несколько часов, потому что локальное хранилище компонентов было повреждено, и компьютеры обращаются к локальному серверу WSUS, а не к общедоступному серверу обновлений Microsoft (и потому, что я очень редко использую Dism). Для справки и помощи другим людям с той же проблемой я запишу описание проблемы и предложу решение.
После обновления до Windows 10 Pro версии 1511 (сборка 10586) у меня возникла проблема с поврежденным файлом. opencl.dll в нескольких местах.
Я попытался sfc.exe /scannow
, но решить проблему не удалось. Среди прочих сообщений об ошибках:
2015-12-08 08:50:43, Info CSI 00003c3a Hashes for file member \SystemRoot\WinSxS\wow64_microsoft-windows-r..xwddmdriver-wow64-c_31bf3856ad364e35_10.0.10586.0_none_3dae054b56911c22\opencl.dll do not match actual file [l:10]"opencl.dll" :
Found: {l:32 g2VAunZ6/2J1G3oL7kf9fjInPUA9VYeiJcl9VKgizaY=} Expected: {l:32 9rnAnuwzPjMQA7sW63oNAVhckspIngsqJXKYSUeQ5Do=}
2015-12-08 08:50:43, Info CSI 00003c3b [SR] Cannot repair member file [l:10]"opencl.dll" of microsoft-windows-RemoteFX-clientVM-RemoteFXWDDMDriver-WOW64-C, version 10.0.10586.0, arch Host= amd64 Guest= x86, nonSxS, pkt {l:8 b:31bf3856ad364e35} in the store, hash mismatch
2015-12-08 08:50:43, Info CSI 00003c3c [SR] This component was referenced by [l:125]"Microsoft-Windows-RemoteFX-VM-Setup-Package~31bf3856ad364e35~amd64~~10.0.10586.0.RemoteFX clientVM and UMTS files and regkeys"
2015-12-08 08:50:43, Info CSI 00003c3d Hashes for file member \??\C:\WINDOWS\SysWOW64\opencl.dll do not match actual file [l:10]"opencl.dll" :
Found: {l:32 g2VAunZ6/2J1G3oL7kf9fjInPUA9VYeiJcl9VKgizaY=} Expected: {l:32 9rnAnuwzPjMQA7sW63oNAVhckspIngsqJXKYSUeQ5Do=}
2015-12-08 08:50:43, Info CSI 00003c3e Hashes for file member \SystemRoot\WinSxS\wow64_microsoft-windows-r..xwddmdriver-wow64-c_31bf3856ad364e35_10.0.10586.0_none_3dae054b56911c22\opencl.dll do not match actual file [l:10]"opencl.dll" :
Found: {l:32 g2VAunZ6/2J1G3oL7kf9fjInPUA9VYeiJcl9VKgizaY=} Expected: {l:32 9rnAnuwzPjMQA7sW63oNAVhckspIngsqJXKYSUeQ5Do=}
2015-12-08 08:50:43, Info CSI 00003c3f [SR] Could not reproject corrupted file [l:23 ml:24]"\??\C:\WINDOWS\SysWOW64"\[l:10]"opencl.dll"; source file in store is also corrupted
Хорошо, теперь проблема ясна. К сожалению, SFC не может устранить повреждение, потому что локальное хранилище компонентов также было повреждено. К сожалению, я потерял сообщения об ошибках, указывающие на повреждение хранилища компонентов.
Так что я попробовал Dism /Online /Cleanup-Image /RestoreHealth
но безрезультатно. Не работает с ошибкой 0x800f081f, что указывает на другую проблему с исходными файлами.
2015-12-08 08:57:35, Info CBS Exec: Download qualification evaluation, business scenario: Manual Corruption Repair
2015-12-08 08:57:35, Info CBS Exec: Clients specified using Windows Update.
2015-12-08 08:57:35, Info CBS WU: Update service is not default AU service, skip. URL: https://fe2.update.microsoft.com/v6/, Name: Microsoft Update
2015-12-08 08:57:35, Info CBS WU: Update service is not default AU service, skip. URL: https://fe2.ws.microsoft.com/v6/, Name: Windows Store
2015-12-08 08:57:35, Info CBS WU: Update service is not default AU service, skip. URL: https://fe3.delivery.mp.microsoft.com/, Name: Windows Store (DCat Prod)
2015-12-08 08:57:35, Info CBS WU: WSUS service is the default, URL: (null), Name: Windows Server Update Service
2015-12-08 08:57:35, Info CBS DWLD:Search is done, set download progress to 20 percent.
2015-12-08 08:57:35, Info CBS Nothing to download, unexpected
2015-12-08 08:57:35, Info CBS Failed to collect payload and there is nothing to repair. [HRESULT = 0x800f081f - CBS_E_SOURCE_MISSING]
2015-12-08 08:57:35, Info CBS Failed to repair store. [HRESULT = 0x800f081f - CBS_E_SOURCE_MISSING]
Глядя на сообщения об ошибках, становится ясно, что Windows настроена на использование нашего локального сервера WSUS, и поэтому Dism не может получить действительный файл из репозиториев. Хотя я уверен, что смогу каким-то образом настроить WSUS для предоставления необходимых файлов, я не знаю, как это сделать, и мне нужно быстрое решение. (Если кто-то знает, как настроить WSUS соответствующим образом, предоставьте информацию).
Ограничение доступа к локальному хранилищу путем добавления параметра /LimitAccess
будет бесполезно, поскольку локальное хранилище компонентов также повреждено, как упоминалось ранее.
Я столкнулся с этой проблемой на двух машинах. А обновить Windows 10 не устранила проблему.
Чтобы решить эту проблему, вам необходимо иметь ISO-образ той сборки, которую вы установили.
mkdir C:\WIM
Dism /Mount-Wim /WimFile:D:\sources\install.wim /index:1 /MountDir:C:\WIM /ReadOnly
Dism /Online /Cleanup-Image /RestoreHealth /Source:C:\WIM\Windows /LimitAccess
Dism /Unmount-Wim /MountDir:C:\WIM /Discard
rmdir C:\WIM
Это должно решить проблему.
редактировать
Как указано в комментариях, может быть более прямой подход. TL; DR заключается в том, что это не сработало для меня, поэтому мой более подробный подход. Но мне интересно, были ли у вас проблемы с прямым заходом. Пожалуйста, прокомментируйте.
С разных форумов в Интернете собрал следующую процедуру ремонта:
MediaCreationTool.exe
к c:\temp\windows.iso
c:\temp\windows.iso
в папку c:\temp\windows
Перерабатывать install.esd
к install.wim
Dism /Export-Image /SourceImageFile:c:\temp\windows\sources\install.esd /SourceIndex:1 /DestinationImageFile:c:\temp\windows\sources\install.wim /compress:max
Проверить индекс и версию Windows в .wim
файл
-
index используется для следующей команды Dism в параметре /Source:wim:path_to_wim:[index]
Dism /Get-WimInfo /wimFile:c:\temp\windows\sources\install.wim
Восстановление компонентов Windows работоспособности из загруженного и преобразованного образа Windows (wim):
Dism /Online /Cleanup-Image /RestoreHealth /Source:wim:c:\temp\windows\sources\install.wim:1 /LimitAccess
Восстановить поврежденные файлы:
sfc /scannow
Он восстановит поврежденные файлы - сообщение об успешном завершении: Windows Resource Protection found corrupt files and successfully repaired them.
Проверьте системные файлы еще раз, чтобы убедиться, что восстановление выполнено успешно:
sfc /scannow
Сообщение об успешном завершении сканирования: Windows Resource Protection did not find any integrity violations.
ESD не является «зашифрованным» WIM, это WIM, который сильно упакован / перекодирован по-разному (с более сложной структурой).
WIM просто «быстро» сжимается небьющимися блоками размером 4 КБ или 16 КБ с использованием быстрого сжатия Хаффмана. ESD использует более продвинутое сжатие на основе LZ без ограничений размера блока. Такое сжатие не позволяет открывать изображение в режиме чтения-записи, поскольку сжатие является глобальным (каждый файл в архиве больше не сжимается отдельно, несколько логических файлов могут совместно использовать фактическое хранилище сегментов, чтобы достичь гораздо более высокого сжатия. уровень, особенно когда есть много небольших файлов с общими частями заголовков, такими как коллекции значков или части данных их цифровой подписи, уведомления об авторских правах, заголовки HTML, встроенные сценарии и т. д.).
SWM - это составной WIM, который был разделен на несколько файлов меньшего размера с (приблизительным) максимальным размером, но он все еще доступен для записи и может храниться на нескольких DVD.
Поставщики CBS допускают несколько форматов архивирования, которые могут поддерживаться DISM, включая WIM, CAB, ZIP, VHD, VHDX, мультисессионные ISO ... Но Windows поставляется с двумя встроенными поставщиками для форматов WIM и ESD (ESD является новым для Windows 10, с Windows 8 поддерживался только формат WIM, но изображения были больше)
Формат ESD был настроен таким образом, чтобы обеспечить возможность размещения полного многоязычного дистрибутива Windows 10 на одном DVD с объемом менее 3 ГБ ...
Вы можете преобразовать ESD в WIM, но в результате получится файл гораздо большего размера. Также возможно обратное преобразование (чтобы вы могли читать-писать в расширенном WIM), чтобы снова упаковать его в новый ESD. Распаковка ESD в WIM относительно быстрая, но сжатие WIM в ESD требует много ресурсов ЦП и занимает гораздо больше времени (вот почему вы не можете читать-писать непосредственно в ESD, но вы можете сделать это довольно легко в WIM со скромными Использование процессора).
Когда вы «монтируете» ESD с помощью DISM, первое, что он делает, это расширяет ESD во временное хранилище и действует с ним, как если бы это был WIM, чтобы вы могли обновлять файлы в этом локальном хранилище. Для его размонтирования потребуется два шага: воссоздать WIM (довольно быстро), а затем снова упаковать его в ESD (очень медленно).
Решил проблему с opengl.dll следующим образом:
Смонтируйте образ Windows 10.
Dism / Online / Cleanup-Image / RestoreHealth / Источник: esd: F: \ sources \ install.esd \ 1 \ Windows \ WinSxS \ wow64_microsoft-windows-r..xwddmdriver-wow64-c_31bf3856ad364e35_10.0.10586.0_none_3daec22b569
sfc / scannow
Удачи!
Я провел несколько дней, идя по этим путям, и наконец нашел решение своей ситуации. Я использую Windows 10 версии 1511, сборка 10586.545. Вот мой прогресс:
Отсюда Центр обновления Windows снова начал работать.
Таким образом, если вы боретесь с этими ошибками и ничего не работает, попробуйте отключить драйверы NVIDIA GeForce, а затем попробуйте некоторые из этих шагов (или вручную скопируйте в чистую версию DLL).
Из-за того, что у меня нет локальной копии и по другой причине невозможно загрузить файл ISO (ISO не относится к типу Windows 10, который я установил). исправление здесь который я использовал для загрузки специального файла под названием "SFCFix":
SFCFix - замечательная маленькая утилита, способная решить эту проблему за вас, восстановив / заменив поврежденный файл dll.
После загрузки исполняемого файла для SFCFix переместите его на рабочий стол.
А ZIP-файл, содержащий все, что нужно SFCFix для ремонта / замены поврежденного файла opencl.dll. Веб-сайт попросит вас зарегистрироваться на нем, чтобы получить доступ к ZIP-файлу, вы должны сделать это, так как это совершенно бесплатно.
После загрузки sfcfix.zip переместите его на рабочий стол. Закройте все открытые программы. Перетащите ZIP-файл в исполняемый файл программы SFCFix и отпустите его.
SFCFix запустится и начнет применять исправление для поврежденного файла DLL. Позвольте ему творить чудеса.
Как только SFCFix будет готов, он создаст файл с именем
SFCFix.txt
на вашем рабочем столе. Откройте этот файл и, если SFCFix удалось восстановить / заменить поврежденный файл opencl.dll,
Обратите внимание, что запуск файла SFCFix.exe без ZIP-архив с исправлением будет долгим и медленным процессом, который мало что дает, вам нужно запустить его с помощью метода перетаскивания ZIP-файла, и результат будет почти мгновенным.
Вы должны иметь возможность использовать образ esd, согласно статье DISM technet. Образ ESD (электронная доставка программного обеспечения) - это просто зашифрованная версия WIM, в котором также используется гораздо лучший алгоритм сжатия, чем в формате WIM (обычно сжатие примерно в 1,5 раза лучше).
Если у вас есть только ESD, но вы предпочитаете использовать WIM, вы можете преобразовать ESD в WIM с помощью команды экспорта DISM. Вы также можете преобразовать WIM в ESD, указав / compress: recovery в команде экспорта или захвата. Преобразование одного в другой требует значительных ресурсов, и поэтому рекомендуется использовать сценарий ESD to WIM, который был написан много лет назад и доступен на форуме MSFN. При использовании сценария только ~ 50% системных ресурсов выделяется на экспорт по сравнению с 90% +, которые обычно используются для экспорта.
Я просто зашел на другую машину с Windows 10 Pro x64 и скопировал файл opencl.dll (из того же каталога). Затем я стал владельцем плохого opencl.dll, переименовал его в opencl.old и скопировал в новый. Перезагрузитесь в безопасный режим и запустите sfc / scannow, и все вернется в норму. В моем случае это был ЕДИНСТВЕННЫЙ плохой файл, указанный в cbs.log ... Я вижу, где может быть лучше, чтобы sfc работал, если у вас много поврежденных файлов и вы не хотите исправлять каждый отдельно. Но если ваша проблема только в одной dll, то кажется, работает простая копия.
Вроде установочный образ (install.esd
) с установочного носителя Creator's Update несовместимо с методом DISM, описанным здесь. Вы получите ошибку 0x800f081f
независимо от того, какую команду вы набираете. Также не помогает извлечь правильный install.wim
из файла ESD. Наконец, я даже попытался смонтировать WIM-файл, но безрезультатно.
Смотрите также обсуждения на https://www.sysnative.com/forums/windows-10-a/22564-dism-error-0x800f081f.html#post179723
Обновление: постоянная ошибка не имеет ничего общего с командой DISM или WIM-файлами. Это связано с пакетом Microsoft-Windows-TestRoot-and-FlightSigning-Package, для которого нет рабочих источников. Файлы находятся в C: \ Windows \ Servicing \ Packages и должны быть перемещены оттуда. Кроме того, в реестре есть две ссылки, которые необходимо удалить. Подробнее см. Связанный системный поток.