Ошибка 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, он успешно скачалось и применилось, требовалась перезагрузка. Обычное, стандартное поведение. После перезагрузки я решил проверить, появилось ли оно в списке установленных, и вот тут уже меня поджидала ошибка:
Повторное действие приводило к таким же последствиям. Если посмотреть логи Windows, то там можно было обнаружить событие:
Теперь давайте рассмотрим самые распространенные причины приводящие к этой ситуации, сразу скажу что их гораздо больше:
- Неправильно настроенные или поврежденные системные файлы: Это может произойти, если системные файлы, необходимые для обновления, повреждены или отсутствуют.
- Проблемы с подключением к Интернету: Если ваше устройство не может подключиться к Интернету или имеет неправильные настройки сети, это может вызвать ошибку обновления. Может быть ситуация, что часть пакетов обновления скачалась, а с некоторыми появились сложности. Например сервер обновления Microsoft стал недоступен или с ним была нестабильная связь.
- Проблемы с дисковым пространством: Если на вашем устройстве не хватает свободного дискового пространства, обновление может не установиться и вызвать ошибку.
- Проблемы с обновлением драйверов: Устаревшие или несовместимые драйверы могут вызывать ошибку обновления.
- Вредоносное программное обеспечение или конфликты программного обеспечения: Вредоносное программное обеспечение или конфликты с другими программами могут препятствовать успешному обновлению.
Как исправить ошибку 0x80070002
- 1️⃣Первое, на что вы должны обратить внимание, это достаточно ли у вас свободного дискового пространства. Это логично, если места нет, то и скачиваться некуда, а если и скачалось, то может просто не получиться распаковать пакет и применить, показав вам код 0x80070002. В моем случае места было достаточно.
- 2️⃣Следующее, что вы должны проверить, это посмотреть стабильность вашего интернета. Например воспользовавшись утилитой ping
Тут нужно визуально посмотреть, что у вас не сильно большое время ответа, оно не скачет до огромных значений, а еще самое важное, что нет потерь пакетов.
- 3️⃣Если вы используете VPN сервисы или Proxy, для выхода в интернет, то это может вызывать ошибку обновлений 0x80070002. Убедитесь, что вы все выключили.
- 4️⃣Когда вы долго работаете с одной системой, то она со временем набивается мусором, хламом и Windows 11 или Windows Server 2022 тут не исключения. Ранее мы уже сталкивались с ошибками обновлений 8050800c и 0x8007050a. Там приходилось запускать волшебный скрипт по очистке папок куда попадали сами обновления до установки, речь идет, о папке catroot2 и SoftwareDistribution SoftwareDistribution.
Щелкните по нему правым кликом и
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.
- 5️⃣Если очистка вас не спасла и ошибка обновлений 0x80070002 продолжает мешать, попробуйте проверить целостность системных файлов и компонентов Windows. Для этого откройте командную строку от имени администратора и запустите вот такую длинную команду, хочу отметить, что она может выполняться минут 20 и более:
Данная процедура так же может растянуться при выполнении до часа, но нужно дождаться. По результатам тут могут быть ошибки, по коду которых вы продолжите дальнейшее изучение. В большинстве случаев DISM все исправит сама. После этого проверяем установку обновления и выскочит ли у вас код ошибки 0x80070002.
- 6️⃣Ручная установка сбойного обновления. В центре обновления найдите сбойную KB, при клике по ней вас перебросит на сайт MIcrosoft, где можно изучить ее состав. Вам просто нужно скопировать ее имя. В моем примере это KB5028168.
Далее переходим в каталог обновлений Windows и пробуем найти нужную KB5028168.
Найдите нужную версию основываясь на вашей версии Windows, так как ошибка обновления Windows с кодом 0x80070002 у меня появилась в 2091 версии, я беру ее. У вас будет своя, тут главное принцип. Нажмите кнопку "Загрузить" msu пакет.
Запустите msu пакет, после чего подтвердите его установку и прощелкайте простой мастер, дождитесь окна просящего вас, о перезагрузки системы.
- 7️⃣Забыл упомянуть в самом начале, что вы легко можете исправить ошибку 0x80070002 если у вас сбились часы в системе. Такое бывает редко, но бывает. В Windows 11 и более младших системах, а так же в серверных есть отвечающая за это настройка. Нажмите сочетание клавиш Win и I, чтобы запустить параметры, найдите там раздел "Время и язык - Дата и время". Убедитесь, что тут выставлена галка "Устанавливать время автоматически". Ниже нажмите кнопку "Синхронизировать".
Так же синхронизировать можно и через командную строку, если ваш компьютер является частью служб Active Directory, то в 99% случаев, там есть свой NTP сервер времени, поэтому обратитесь к администратору, чтобы вам помог:
- 8️⃣Попробуйте запустить PowerShell в режиме администратора и создать с его помощью ключ реестра:
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" выполняет сброс настроек Winsock в операционной системе Windows. Это может быть полезно, если возникают проблемы с сетевым подключением или работой сетевых приложений. Сброс настроек Winsock восстанавливает их к значениям по умолчанию, что может помочь исправить возможные конфликты или ошибки в настройках сети.
- 1️⃣1️⃣ На работе на нескольких рабочих станциях с Windows 10 при попытке обновить, я так же получал код ошибки 0x80070002 и в этом случае удалось исправить ситуацию, путем очистки папки WinSxS.
WinSxS (Windows Side-by-Side) - это технология, используемая в операционной системе Windows для управления и хранения различных версий компонентов операционной системы и приложений. WinSxS позволяет установленным приложениям использовать необходимые им версии компонентов, а также обеспечивает возможность параллельной установки и использования нескольких версий одного и того же компонента без конфликтов. Это позволяет избежать проблем совместимости и обеспечивает более гибкое управление компонентами системы. Если какой-то из компонентов повреждается или у него остались старые файлы, их лучше правильно почистить.
Запустите командную строку в режиме администратора или PowerShell. Первое, что нам нужно сделать, это оценить размер WinSxS и сколько можно высвободить устаревших файлов.
Теперь, чтобы начать очистку кэша и временных файлов в WinSxS введите:
Как вы можете посмотреть на моем примере, после проведенного анализа видно, что общий размер папки WinSxS 17,75 ГБ и удалить из нее можно 3,91 ГБ.
В результате через проводник видно успешность проделанной работы. Перезагрузитесь, проверьте установку обновлений и удалось ли исправить 0x80070002.
Тут все просто, запустили, выбрали "Файлы журнала и обновление Windows", нажали удалить. Ожидаем.
- 1️⃣2️⃣Еще один пример из практики, когда я получал код ошибки 0x80070002. У пользователя был ноутбук, являющийся частью домена Active Directory. На данное устройство применялись корпоративные политики, которые определяли, что сервером с которого будут скачиваться обновления, будет внутренний сервер построенный на SCCM+WSUS.
В результате этого, дома сотрудник не мог получить свежие обновления безопасности, так как не было связи с сервером обновления, как следствие ошибка обновлений 0x80070002. В Windows за назначение дополнительного сервера обновлений, отвечает ветка реестра:
Давайте я покажу, что тут проверять. Начнем из графического режима. Запустите окно "Выполнить" и введите regedit.
Проходим в ту ветку, что я указывал выше. Найдите нет ли у вас тут ключей WUServer и WUStatusServer.
Нам их нужно удалить, но на всякий случай сохраните их через экспортирование ветки.
Теперь удаляем ключи и пробуем проверить установку обновлений, ошибка 0x80070002 должна уйти.
То же самое можно сделать и с помощью 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 не найдена."
}
Теперь экспортируем на всякий случай данную ветку по пути 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 не найдена."
}
Ошибка 0x80070002 при установке Windows
Такое то же бывает, вы пытаетесь произвести чистую установку Windows 11 или любой другой системы, в какой-то момент при распаковке файлов или в самом начале вы получает нечто подобное:
В 100% случаев у вас криво записалась загрузочная флешка, либо же у вас в целом проблемный ISO образ с которого делается загрузочное устройство и его необходимо пере закачать.
Спасибо, познавательно и полезно.
Очень рад, что было полезно!
Здравствуйте, а если ошибка с кодом 0x80070002 в магазине Microsoft Store при обновлении и скачивании любого приложения, то есть не дает сделать этого. Имеет смысл проделывать все то, что было описано выше? Насколько я понял, в Store эта ошибка тоже устойчивая, второй день с ней борюсь, уже думаю переустанавливать систему.
Здравствуйте, а если ошибка с кодом 0x80070002 в магазине Microsoft Store при обновлении и скачивании любого приложения, то есть не дает сделать этого. Имеет смысл проделывать все то, что было описано выше? Насколько я понял, в Store эта ошибка тоже устойчивая, уже два горда с ней борюсь