Як виправити пошкоджений opencl.dll у Windows 10, якщо помилки SFC та DISM не вдається?


33

Щоб вирішити цю проблему, мені знадобилося кілька годин, оскільки локальний склад компонентів був пошкоджений, а комп'ютери отримують доступ до локального сервера WSUS замість загальнодоступного сервера оновлень від Microsoft (і тому, що я дуже рідко використовую Dism). Для довідки та допомоги іншим людям із тим самим питанням я напишу опис проблеми та запропоную рішення.

З моменту оновлення до Windows 10 Pro версії 1511 (Build 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 не вирішити проблему.


fwiw тут довга нитка відповідає.microsoft.com/ en-us/windows/forum/… про проблеми з цим dll.
Рорі

Відповіді:


42

Щоб вирішити цю проблему, вам потрібно встановити ISO точної збірки, яку ви встановили.

  1. Змонтуйте образ ISO.
  2. Створіть тимчасовий каталог для встановлення файлу зображень Windows (WIM).
    mkdir C:\WIM
  3. Змонтуйте файл WIM.
    Dism /Mount-Wim /WimFile:D:\sources\install.wim /index:1 /MountDir:C:\WIM /ReadOnly
  4. Запустіть Dism із наступними параметрами.
    Dism /Online /Cleanup-Image /RestoreHealth /Source:C:\WIM\Windows /LimitAccess
  5. Закінчивши, відключіть зображення та видаліть папку
    Dism /Unmount-Wim /MountDir:C:\WIM /Discard rmdir C:\WIM
  6. Обов’язково потрібно перезавантажити комп’ютер, інакше SFC та DISM все одно відображатимуться помилки.

Це має вирішити проблему.

Редагування
Як зазначалося в коментарях, може бути більш прямий підхід. TL; DR полягає в тому, що це не спрацювало для мене, отже, мій більш детальний підхід. Але мене цікавить, чи були у вас проблеми з прямим підходом. Будь ласка, прокоментуйте.


2
ви можете вказати на WIM, не монтуючи WIM: superuser.com/a/870956/174557
magicandre1981

3
@ magicandre1981 дякую за ваш коментар. Я читав про це, і намагався це безрезультатно. Це завжди виходило з помилки, це було 0x800f081f я добре пам'ятаю. Дивно було побачити, що я не зміг знайти нічого щодо цього /source:wimпараметра в офіційній документації для параметрів командного рядка Dism .
Даніель

Я читаю це тут у вмісті, щоб увімкнути функції: blogs.technet.com/b/joscon/archive/2013/03/29/…
magicandre1981

2
це також допомогло іншим користувачам: borncity.com/blog/2015/12/09/… дивно, що монтаж працює, але безпосередньо передача WIM не є.
magicandre1981

4
Після завантаження зображення Windows 10 за допомогою інструмента створення засобів масової інформації тут: microsoft.com/en-ca/software-download/windows10 отриманий img мав у ньому install.esd, який потрібно було перетворити на WIM, щоб його змонтувати by Dism. Я використовував NTLite для цього. Після цього інструкції Даніеля спрацювали чудово. Просто зауважте, що параметр / index на третьому кроці, ймовірно, повинен відображати версію Windows, Pro або Home, яку ви відновлюєте (іншими словами, використовуйте / index: 1 для Pro та / index: 2 для Home)
Eli B.

10

З різних форумів в Інтернеті я зібрав таку процедуру ремонту:

  1. Завантажте MediaCreationTool з http://go.microsoft.com/fwlink/?LinkId=691209
  2. Завантажте Windows 10 Pro ISO з MediaCreationTool.exeдоc:\temp\windows.iso
  3. Використовуйте 7-zip для витягування файлу c:\temp\windows.isoв папкуc:\temp\windows
  4. Перетворити 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

  5. Перевірка індексу та версії Windows у індексі .wimфайлів
    -використовується для наступної команди Dism у параметрі/Source:wim:path_to_wim:[index]

    Dism /Get-WimInfo /wimFile:c:\temp\windows\sources\install.wim

  6. Відновлення компонентів Windows для здоров'я зі завантаженого та перетвореного зображення Windows (WIM):

    Dism /Online /Cleanup-Image /RestoreHealth /Source:wim:c:\temp\windows\sources\install.wim:1 /LimitAccess

  7. Відновлення пошкоджених файлів:

    sfc /scannow

    Він відновить пошкоджені файли - повідомлення про успіх: Windows Resource Protection found corrupt files and successfully repaired them.

  8. Перезавантажте Windows
  9. Знову перевірте системні файли, щоб переконатися в успішному ремонті:

    sfc /scannow

    Повідомлення про успіх після сканування: Windows Resource Protection did not find any integrity violations.


1
Завдяки цьому, нарешті, виправлено мою інсталяцію Windows 10, яку я нещодавно зробив чистим. Здається, викрутитись, і не вдасться невдовзі виконати функціонування після навіть чистої установки! Все одно побачимо, як довго він залишається зафіксованим цього разу! Вгадайте, Microsoft все ще не виправив це в останньому оновлення win 10, оскільки, здається, відома проблема для 1511 збирання news.softpedia.com/news/… ps не довелося робити крок 4, хоча оскільки install.wim вже був там, коли я витягнув вікна ISO.
daveangel

Дякую за відповідь Перевірка системних файлів буде пошкоджена після встановлення графічних переходів. Але тепер достатньо для відновлення системи лише з запуском SFC / SCANNOW - Схоже, зараз доступна правильна версія opencl.dll у папці winxs. PS: Це правда, якщо ви завантажите завантажувальний ISO, не вдасться виконати крок 4, але інструмент створення медіа завантажує лише файл ESD (версія, призначена для оновлення Windows 10). Інструмент створення медіа - найкращий вибір для автоматичного завантаження правильних інсталяційних носіїв :-)
kapitanrum

Крок 4 (витягнення файлу WIM) зробив це для мене. Відмінний путівник. Спасибі.
Раві Валлау

1
крок 6 зазнає невдачі для мене «вихідні файли не можуть бути знайдені», помилка 0x800f091f
simpleuser

Я переглядаю помилку 0x800f091f, і проблема може бути з установкою .NET Framework 3.5. Якщо у вас є лише версія 4+, спробуйте також встановити версію 3.5. Спробуйте посібник з установки MS: msdn.microsoft.com/en-us/library/hh506443(v=vs.110).aspx
kapitanrum

4

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 на WIM відбувається досить швидко, але для стиснення WIM до ESD потрібно багато ресурсів процесора і значно довше (саме тому ви не можете читати-записувати безпосередньо в ESD, але ви можете зробити це досить легко у WIM з помірними Використання процесора).

Коли ви "змонтуєте" ESD за допомогою DISM, перше, що він зробить, - це розширити ESD у тимчасове сховище та діяти на ньому, як якщо б це був WIM, щоб ви могли оновити файли в цьому локальному сховищі. Для його демонстрації знадобляться два кроки: відтворення WIM (досить швидко), а потім знову упаковка в ESD (дуже повільно).


2

Я вирішив проблему з opengl.dll наступним чином:

  1. Змонтуйте зображення Windows 10.

  2. Dism / Online / Cleanup-Image / RestoreHealth / Джерело: esd: F: \ source \ install.esd \ 1 \ Windows \ WinSxS \ wow64_microsoft-windows-r..xwddmdriver-wow64-c_31bf3856ad364e35_10.0.10586.0_none_3dae02211c1154c6911

  3. sfc / scannow

Удачі!


6
ESD ISO не відновлюється. Ви повинні використовувати ТОЛЬКО WIM ISO, який ви можете завантажити з microsoft.com/en-us/software-download/techbench
23W

2

Я провів кілька днів по цих стежках і, нарешті, знайшов рішення для своєї ситуації. Я використовую Windows 10 версії 1511 Build 10586.545. Ось мій прогрес:

  1. Це почалося для мене з помилкою оновлення Windows (помилка 0x800705b4).
  2. Потім я переслідував цю помилку, роблячи засоби усунення несправностей Windows Update, WUResets, вимикаючи антивірус тощо. Ця посилання є хорошою статтею, яка дає варіанти для цієї проблеми (хоча вони мені не допомогли)
  3. Потім я пішов вниз по DISM та SFC. Цей пост ServerFault був дуже корисним у цій спробі. На жаль, жоден із цих варіантів не допоміг. Мені постійно говорили, що у мене є пошкоджений файл opencl.dll, і запуск усіляких варіацій DISM / RestoreHealth не працював. Я постійно отримував 0x800f081f (вихідні файли не вдалося знайти)
  4. Далі я спробував вручну скопіювати opencl.dll з чистого ISO у C: \ Windows \ SysWOW64. Це ніколи не спрацьовувало, навіть після того, як возитися з власністю тощо. Нарешті я відключив драйвер GPU NVIDIA GeForce в диспетчері пристроїв (залишаючи драйвер Intel все ще ввімкненим дисплей), і зміг скопіювати чистий opencl.dll у C: \ Windows \ SysWOW64.

Звідси Windows Update знову почав працювати.

Отже, підсумовуючи, якщо ви зіткнулися з цими помилками, і нічого, здається, не спрацювало, спробуйте відключити драйвери NVIDIA GeForce, а потім спробуйте виконати деякі з цих кроків (або скопіюйте вручну в чисту версію DLL).


1

Через відсутність локальної копії та з-за окремої причини неможливо завантажити файл 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-файлу, і результат майже миттєвий.


0

Ви повинні мати можливість використовувати зображення esd відповідно до статті DISM. Образ ESD (Електронна доставка програмного забезпечення) є просто зашифрованою версією WIM, а також використовується набагато кращий алгоритм стиснення, ніж формат WIM (як правило, на 1,5 рази краще стиснення).

Якщо все є ESD, але скоріше використовувати WIM, ви можете перетворити ESD у WIM за допомогою команди експорту DISM. Ви також можете конвертувати WIM в ESD, вказавши / сжати: відновлення в команді експорту або захоплення. Перетворення одного в інший є ресурсомістким, і через це рекомендується використовувати скрипт ESD до WIM, написаний років тому і доступний на форумі MSFN. Використовуючи сценарій, на експорт припадає лише ~ 50% системних ресурсів порівняно з 90% +, які зазвичай використовуються для експорту.


0

Я щойно перейшов на іншу машину Windows 10 Pro x64 і скопіював файл opencl.dll (з тієї ж директорії). Тоді я взяв право власності на поганий opencl.dll, перейменував його на opencl.old і скопіював у новий. Перезавантажте систему в безпечний режим і запустіть sfc / scannow, і це повернеться добре. У моєму випадку це був ТІЛЬКИ поганий файл, перелічений у cbs.log ... Я можу побачити, де може бути краще мати роботу sfc, якщо у вас є багато пошкоджених файлів і не хочеться виправляти кожен окремо. Але якщо ваша проблема - лише одна dll, то, здається, проста копія спрацює.


0

Здається, що встановлення image ( 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 \ Обслуговування \ Пакети та їх потрібно перемістити звідти. Також в реєстрі є дві посилання, які потрібно видалити. Детальні відомості див. У пов'язаній нитці систематизованих систем.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.