Ошибка 0x80070002, решаем за минуту

Обновлено 26.09.2023

ошибка 0x80070002

Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы с вами успешно устранили ошибку 0xc0000098 при загрузке Windows. Сегодня мы вновь погрузимся в мир траблшутинга. В августе Microsoft выпустила очередные обновления, у огромного количества пользователей при их установке возникла ошибка 0x80070002. Перечень систем, которые этому подверглись очень большой, начиная от Windows 8.1 вплоть до Windows 11, а так же серверный сегмент от Windows Server 2016 до Windows Server 2022. Давайте я покажу ряд действий в виде инструкций, которые позволят вам исправить ошибку 0x80070002.

Почему появляется ошибка обновления windows 0x80070002

Для начала давайте я немного опишу свою ситуацию. Мне потребовалось обновить один из серверов компании на базе Windows Server 2022. Автоматическая система давала сбой и я решил выполнить это вручную. В центре обновления Windows я запросил обновление на сайте Microsoft, он успешно скачалось и применилось, требовалась перезагрузка. Обычное, стандартное поведение. После перезагрузки я решил проверить, появилось ли оно в списке установленных, и вот тут уже меня поджидала ошибка:

Last failed install attempt (Последняя неудачная попытка установки) - 0x80070002

Ошибка 0x80070002 в Windows Server 2019

Повторное действие приводило к таким же последствиям. Если посмотреть логи Windows, то там можно было обнаружить событие:

Package KB5028168 failed to be changed to the Installed state. Status: 0x80070002. (Пакет KB5028168 не удалось перевести в состояние «Установлено». Статус: 0x80070002.)

не удалось перевести в состояние «Установлено». Статус: 0x80070002

Теперь давайте рассмотрим самые распространенные причины приводящие к этой ситуации, сразу скажу что их гораздо больше:

  • Неправильно настроенные или поврежденные системные файлы: Это может произойти, если системные файлы, необходимые для обновления, повреждены или отсутствуют.
  • Проблемы с подключением к Интернету: Если ваше устройство не может подключиться к Интернету или имеет неправильные настройки сети, это может вызвать ошибку обновления. Может быть ситуация, что часть пакетов обновления скачалась, а с некоторыми появились сложности. Например сервер обновления Microsoft стал недоступен или с ним была нестабильная связь.

Ошибка скачивания 0x80070002

  • Проблемы с дисковым пространством: Если на вашем устройстве не хватает свободного дискового пространства, обновление может не установиться и вызвать ошибку.
  • Проблемы с обновлением драйверов: Устаревшие или несовместимые драйверы могут вызывать ошибку обновления.
  • Вредоносное программное обеспечение или конфликты программного обеспечения: Вредоносное программное обеспечение или конфликты с другими программами могут препятствовать успешному обновлению.

Как исправить ошибку 0x80070002

Первым делом в любой ситуации с ошибками Windows, просто перезагрузите систему, это правило номер "0"

  • 1️⃣Первое, на что вы должны обратить внимание, это достаточно ли у вас свободного дискового пространства. Это логично, если места нет, то и скачиваться некуда, а если и скачалось, то может просто не получиться распаковать пакет и применить, показав вам код 0x80070002. В моем случае места было достаточно.

Проводник Windows 11

  • 2️⃣Следующее, что вы должны проверить, это посмотреть стабильность вашего интернета. Например воспользовавшись утилитой ping

ping microsoft.com -t

Тут нужно визуально посмотреть, что у вас не сильно большое время ответа, оно не скачет до огромных значений, а еще самое важное, что нет потерь пакетов.

Советую почитать - Как я проводил диагностику интернет соединения и общался с провайдером

ping microsoft.com -t

  • 3️⃣Если вы используете VPN сервисы или Proxy, для выхода в интернет, то это может вызывать ошибку обновлений 0x80070002. Убедитесь, что вы все выключили.
  • 4️⃣Когда вы долго работаете с одной системой, то она со временем набивается мусором, хламом и Windows 11 или Windows Server 2022 тут не исключения. Ранее мы уже сталкивались с ошибками обновлений 8050800c и 0x8007050a. Там приходилось запускать волшебный скрипт по очистке папок куда попадали сами обновления до установки, речь идет, о папке catroot2 и SoftwareDistribution SoftwareDistribution.

Скачайте у меня готовый скрипт очистки папок SoftwareDistribution и catroot2, так будет проще.

Щелкните по нему правым кликом и

Запуск скрипта исправляющего 0x80070002

net stop bits
net stop wuauserv
net stop appidsvc
net stop cryptsvc

Del "%ALLUSERSPROFILE%\Application Data\Microsoft\Network\Downloader\qmgr*.dat"
Ren %systemroot%\SoftwareDistribution SoftwareDistribution.bak
Ren %systemroot%\system32\catroot2 catroot2.bak
sc.exe sdset bits D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)
sc.exe sdset wuauserv D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)
cd /d %windir%\system32
regsvr32.exe atl.dll /s
regsvr32.exe urlmon.dll /s
regsvr32.exe mshtml.dll /s
regsvr32.exe shdocvw.dll /s
regsvr32.exe browseui.dll /s
regsvr32.exe jscript.dll /s
regsvr32.exe vbscript.dll /s
regsvr32.exe scrrun.dll /s
regsvr32.exe msxml.dll /s
regsvr32.exe msxml3.dll /s
regsvr32.exe msxml6.dll /s
regsvr32.exe actxprxy.dll /s
regsvr32.exe softpub.dll /s
regsvr32.exe wintrust.dll /s
regsvr32.exe dssenh.dll /s
regsvr32.exe rsaenh.dll /s
regsvr32.exe gpkcsp.dll /s
regsvr32.exe sccbase.dll /s
regsvr32.exe slbcsp.dll /s
regsvr32.exe cryptdlg.dll /s
regsvr32.exe oleaut32.dll /s
regsvr32.exe ole32.dll /s
regsvr32.exe shell32.dll /s
regsvr32.exe initpki.dll /s
regsvr32.exe wuapi.dll /s
regsvr32.exe wuaueng.dll /s
regsvr32.exe wuaueng1.dll /s
regsvr32.exe wucltui.dll /s
regsvr32.exe wups.dll /s
regsvr32.exe wups2.dll /s
regsvr32.exe wuweb.dll /s
regsvr32.exe qmgr.dll /s
regsvr32.exe qmgrprxy.dll /s
regsvr32.exe wucltux.dll /s
regsvr32.exe muweb.dll /s
regsvr32.exe wuwebv.dll /s

netsh winsock reset
netsh winhttp reset proxy
net start bits
net start wuauserv
net start appidsvc
net start cryptsvc
wuauclt.exe /detectnow /updatenow

Пробуем заново запустить установку обновлений Windows.

Скрипт по очистке старых обновлений Windows

  • 5️⃣Если очистка вас не спасла и ошибка обновлений 0x80070002 продолжает мешать, попробуйте проверить целостность системных файлов и компонентов Windows. Для этого откройте командную строку от имени администратора и запустите вот такую длинную команду, хочу отметить, что она может выполняться минут 20 и более:

sfc /scannow & DISM /Online /Cleanup-Image /ScanHealth & DISM /Online /Cleanup-Image /CheckHealth & DISM /Online /Cleanup-Image /RestoreHealth

Данная процедура так же может растянуться при выполнении до часа, но нужно дождаться. По результатам тут могут быть ошибки, по коду которых вы продолжите дальнейшее изучение. В большинстве случаев DISM все исправит сама. После этого проверяем установку обновления и выскочит ли у вас код ошибки 0x80070002.

Выполнение DISM

  • 6️⃣Ручная установка сбойного обновления. В центре обновления найдите сбойную KB, при клике по ней вас перебросит на сайт MIcrosoft, где можно изучить ее состав. Вам просто нужно скопировать ее имя. В моем примере это KB5028168.

Состав KB вызывающую 0x80070002

Далее переходим в каталог обновлений Windows и пробуем найти нужную KB5028168.

https://www.catalog.update.microsoft.com/Home.aspx

Найдите нужную версию основываясь на вашей версии Windows, так как ошибка обновления Windows с кодом 0x80070002 у меня появилась в 2091 версии, я беру ее. У вас будет своя, тут главное принцип. Нажмите кнопку "Загрузить" msu пакет.

KB5028168 в каталоге Windows

Запустите msu пакет, после чего подтвердите его установку и прощелкайте простой мастер, дождитесь окна просящего вас, о перезагрузки системы.

Ручная установка KB

  • 7️⃣Забыл упомянуть в самом начале, что вы легко можете исправить ошибку 0x80070002 если у вас сбились часы в системе. Такое бывает редко, но бывает. В Windows 11 и более младших системах, а так же в серверных есть отвечающая за это настройка. Нажмите сочетание клавиш Win и I, чтобы запустить параметры, найдите там раздел "Время и язык - Дата и время". Убедитесь, что тут выставлена галка "Устанавливать время автоматически". Ниже нажмите кнопку "Синхронизировать".

Синхронизация времени Windows 11

Так же синхронизировать можно и через командную строку, если ваш компьютер является частью служб Active Directory, то в 99% случаев, там есть свой NTP сервер времени, поэтому обратитесь к администратору, чтобы вам помог:

w32tm /register && net start w32time && w32tm /resync

New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\OSUpgrade" -Force
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\OSUpgrade" -Name "AllowOSUpgrade" -PropertyType DWORD -Value 1 -Force

Ключ реестра "AllowOSUpgrade" используется для разрешения или запрещения обновления операционной системы Windows. Значение 1 указывает на разрешение обновления, а значение 0 указывает на запрет.

  • 9️⃣Еще одним действенным методом выступает встроенная утилита "Устранение неполадок". Чтобы ее найти вам нужно откройте меню "Пуск" и в строке поиска введите "Устранение", этого будет достаточно, чтобы найти пункт параметров, в моем примере это Windows 11/ 2022, но это будет актуально везде. Нажмите на "Параметры устранения неполадок".

параметры устранения неполадок

Нажмите "Другие средства устранения неполадок"

Другие средства устранения неполадок

Находим пункт "Центр обновления Windows" и нажимаем кнопку "Запуск"

Устранение ошибок центра обновлений

Утилита просканирует данный компонент и если в нем будут найдены проблемы, постарается их исправить. Ниже я привел пример для Windows 11 и Windows Server 2022. В целом эта встроенная утилита может оказаться очень действенной при ошибке 0x80070002.

устранение неполадок с обновлением

  • 1️⃣0️⃣Вы очень стойкий, если дошли до десятого метода, видимо вы очень хотите исправить ошибку 0x80070002. Попробуйте в командной строке произвести сброс Winsock.

netsh winsock reset

netsh winsock reset

Вас попросят перезагрузить систему. Команда "netsh winsock reset" выполняет сброс настроек Winsock в операционной системе Windows. Это может быть полезно, если возникают проблемы с сетевым подключением или работой сетевых приложений. Сброс настроек Winsock восстанавливает их к значениям по умолчанию, что может помочь исправить возможные конфликты или ошибки в настройках сети.

  • 1️⃣1️⃣ На работе на нескольких рабочих станциях с Windows 10 при попытке обновить, я так же получал код ошибки 0x80070002 и в этом случае удалось исправить ситуацию, путем очистки папки WinSxS.

WinSxS (Windows Side-by-Side) - это технология, используемая в операционной системе Windows для управления и хранения различных версий компонентов операционной системы и приложений. WinSxS позволяет установленным приложениям использовать необходимые им версии компонентов, а также обеспечивает возможность параллельной установки и использования нескольких версий одного и того же компонента без конфликтов. Это позволяет избежать проблем совместимости и обеспечивает более гибкое управление компонентами системы. Если какой-то из компонентов повреждается или у него остались старые файлы, их лучше правильно почистить.

Запустите командную строку в режиме администратора или PowerShell. Первое, что нам нужно сделать, это оценить размер WinSxS и сколько можно высвободить устаревших файлов.

Dism.exe /online /cleanup-image /AnalyzeComponentStore

Теперь, чтобы начать очистку кэша и временных файлов в WinSxS введите:

Dism.exe /online /cleanup-image /StartComponentCleanup

Как вы можете посмотреть на моем примере, после проведенного анализа видно, что общий размер папки WinSxS 17,75 ГБ и удалить из нее можно 3,91 ГБ.

Исправление ошибки 0x80070002 через очистку папки WinSxS

В результате через проводник видно успешность проделанной работы. Перезагрузитесь, проверьте установку обновлений и удалось ли исправить 0x80070002.

Размер папки WinSxS

Кстати у данной процедуры есть и графический вариант в виде оснастки - Очистка диска (Cleanmgr.exe)

Тут все просто, запустили, выбрали "Файлы журнала и обновление Windows", нажали удалить. Ожидаем.

Использование clearmgr.exe

  • 1️⃣2️⃣Еще один пример из практики, когда я получал код ошибки 0x80070002. У пользователя был ноутбук, являющийся частью домена Active Directory. На данное устройство применялись корпоративные политики, которые определяли, что сервером с которого будут скачиваться обновления, будет внутренний сервер построенный на SCCM+WSUS.

SCCM+WSUS - Это единая система скачивания обновлений с сайта Microsoft, для дальнейшего распространения по локальной сети без необходимости иметь интернет

В результате этого, дома сотрудник не мог получить свежие обновления безопасности, так как не было связи с сервером обновления, как следствие ошибка обновлений 0x80070002. В Windows за назначение дополнительного сервера обновлений, отвечает ветка реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\ Microsoft\Windows\WindowsUpdate

Давайте я покажу, что тут проверять. Начнем из графического режима. Запустите окно "Выполнить" и введите regedit.

Открытие regedit

Проходим в ту ветку, что я указывал выше. Найдите нет ли у вас тут ключей WUServer и WUStatusServer.

Ключи WUServer и WUStatusServer

Нам их нужно удалить, но на всякий случай сохраните их через экспортирование ветки.

Экспорт ветки реестра

Теперь удаляем ключи и пробуем проверить установку обновлений, ошибка 0x80070002 должна уйти.

Удаление ключей WUServer и WUStatusServer

То же самое можно сделать и с помощью PowerShell ISE в режиме администратора. Для начала посмотрим значение ключей WUServer и WUStatusServer.

$regPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate"
$wuserverKey = "WUServer"
$wustatusserverKey = "WUStatusServer"

# Проверяем наличие ветки реестра
if (Test-Path $regPath) {
# Получаем значения ключей
$wuserverValue = Get-ItemPropertyValue -Path $regPath -Name $wuserverKey -ErrorAction SilentlyContinue
$wustatusserverValue = Get-ItemPropertyValue -Path $regPath -Name $wustatusserverKey -ErrorAction SilentlyContinue

# Выводим значения ключей
Write-Host "Значение ключа $wuserverKey $wuserverValue"
Write-Host "Значение ключа $wustatusserverKey $wustatusserverValue"
}
else {
Write-Host "Ветка реестра $regPath не найдена."
}

Powershell просмотр ключей WUServer и WUStatusServer

Теперь экспортируем на всякий случай данную ветку по пути C:\temp\registry_export.reg.

$regPath = "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate"
$exportPath = "C:\temp\registry_export.reg"

& reg export $regPath $exportPath

Теперь удалим эти два ключа. Скрипт у вас запросит подтверждение удаления.

$regPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate"
$wuserverKey = "WUServer"
$wustatusserverKey = "WUStatusServer"

# Проверяем наличие ветки реестра
if (Test-Path $regPath) {
# Получаем значения ключей
$wuserverValue = Get-ItemPropertyValue -Path $regPath -Name $wuserverKey -ErrorAction SilentlyContinue
$wustatusserverValue = Get-ItemPropertyValue -Path $regPath -Name $wustatusserverKey -ErrorAction SilentlyContinue

# Выводим значения ключей
Write-Host "Значение ключа $wuserverKey $wuserverValue"
Write-Host "Значение ключа $wustatusserverKey $wustatusserverValue"

# Запрашиваем подтверждение удаления
$confirmation = Read-Host "Хотите удалить значения ключей? (да/нет)"

if ($confirmation.ToLower() -eq "да") {
# Удаляем значения ключей
Remove-ItemProperty -Path $regPath -Name $wuserverKey -ErrorAction SilentlyContinue
Remove-ItemProperty -Path $regPath -Name $wustatusserverKey -ErrorAction SilentlyContinue

Write-Host "Значения ключей удалены."
}
else {
Write-Host "Удаление отменено."
}
}
else {
Write-Host "Ветка реестра $regPath не найдена."
}

Удаление ключей реестра с подтверждением в Powershell

Ошибка 0x80070002 при установке Windows

Такое то же бывает, вы пытаетесь произвести чистую установку Windows 11 или любой другой системы, в какой-то момент при распаковке файлов или в самом начале вы получает нечто подобное:

Windows не удается установить необходимые файлы. Код ошибки 0x80070002

В 100% случаев у вас криво записалась загрузочная флешка, либо же у вас в целом проблемный ISO образ с которого делается загрузочное устройство и его необходимо пере закачать.

Ошибка 0x80070002 при установке Windows

Автор - Сёмин Иван

3 Responses to Ошибка 0x80070002, решаем за минуту

  1. Николай:

    Спасибо, познавательно и полезно.

  2. Иван Семин:

    Очень рад, что было полезно!

  3. Roman Romanov:

    Здравствуйте, а если ошибка с кодом 0x80070002 в магазине Microsoft Store при обновлении и скачивании любого приложения, то есть не дает сделать этого. Имеет смысл проделывать все то, что было описано выше? Насколько я понял, в Store эта ошибка тоже устойчивая, второй день с ней борюсь, уже думаю переустанавливать систему.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *