Эта ошибка — классика. Она вылезает при обновлении Windows, при установке программ, при активации офиса, при попытке записать что-то в системную папку. Коротко: Windows хочет сделать что-то важное, а у неё не хватает прав. Или, что хуже, права есть, но кто-то их сломал. Вот что я делаю, когда вижу 0x80070005. По порядку. От простого к тому, что требует перезагрузки.
Почему так происходит
Три основные причины. Всё остальное — вариации.
Недостаточно прав. Пользователь не администратор, а обновление пытается записать файлы в C:\Windows или C:\ProgramData. Windows блокирует.
Служба Центра обновления работает под неправильной учётной записью. Должна быть «Локальная система», а стала чем-то другим. Бывает после «оптимизаторов» или вирусов.
Права на папки обновлений сбиты. Папка C:\Windows\SoftwareDistribution или C:\Windows\Temp имеет неправильных владельцев или права. Windows не может туда писать.
Способ 1. Запуск от имени администратора (если это установка программы)
Если ошибка вылезла не при обновлении Windows, а при установке какой-то программы — просто кликните правой кнопкой на установщике и выберите «Запуск от имени администратора». Звучит очевидно, но я видел, как люди тратят час на гугление, а решение было в одном клике.
Если это не помогает — идём дальше.
Способ 2. Сброс прав на папки обновлений
Это работает в 60% случаев. Особенно если ошибка появилась после работы антивируса или утилиты очистки диска, которая «почистила» заодно и права доступа.
Открываем командную строку от имени администратора и по очереди выполняем:
net stop wuauserv
net stop bits
Останавливаем службы обновлений. Теперь сбрасываем права на папку SoftwareDistribution:
takeown /f "C:\Windows\SoftwareDistribution" /r /d y
icacls "C:\Windows\SoftwareDistribution" /grant administrators:F /t
Команда takeown забирает владение папкой у системы и отдаёт текущему пользователю. icacls даёт полные права группе администраторов. /r и /t означают «рекурсивно, включая подпапки и файлы».
То же самое делаем с папкой Temp:
takeown /f "C:\Windows\Temp" /r /d y
icacls "C:\Windows\Temp" /grant administrators:F /t
net start bits
Бывает, что служба wuauserv настроена на запуск под конкретной учётной записью, а не под «Локальной системой». Это ломает всё.
Если предыдущие способы не помогли — возможно, повреждены компоненты Windows Update. Перерегистрируем их.
Командная строка от администратора:
net stop bits
regsvr32 /u wuapi.dll
regsvr32 wuapi.dll
regsvr32 /u wuaueng.dll
regsvr32 wuaueng.dll
regsvr32 /u wups.dll
regsvr32 wups.dll
regsvr32 /u wups2.dll
regsvr32 wups2.dll
regsvr32 /u wucltux.dll
regsvr32 wucltux.dll
regsvr32 /u wuwebv.dll
regsvr32 wuwebv.dll
net start wuauserv
net start bits
Профилактика
Не запускайте «оптимизаторы», которые обещают «ускорить Windows в 10 раз». Они ломают права доступа, службы и реестр.
Регулярно проверяйте диск на ошибки: chkdsk C: /f.
Вместо послесловия
Я потратил на эту ошибку больше времени, чем хотел бы признать. Иногда она решается за пять минут, иногда — за два часа. Надеюсь, этот разбор сэкономит вам хотя бы половину этого времени. Если знаете ещё способ — пишите. 0x80070005 — злодей хитрый, и у него больше лиц, чем у Шивы.