Исправление ошибки обновления Windows 10 0xc1800118 — пошаговое руководство

О чём эта статья
Это практическое руководство по диагностике и устранению ошибки установки обновлений Windows 10 с кодом 0xc1800118 при работе через WSUS или автономную установку. Приведены последовательные команды PowerShell и SQL-запросы, пояснения, контрольный список для администратора и варианты обхода.
Важно: приведённые команды корректируют базу WSUS и удаляют ранее синхронизированные файлы. Выполняйте на верхнем (upstream) сервере WSUS и предварительно делайте резервную копию базы данных.
Что означает ошибка 0xc1800118
Ошибка обычно возникает, когда пакет обновления версия 1607 помечен как зашифрованный в одном месте, но его запись в таблице WSUS (SUSDB) не содержит ключа дешифрования (DecryptionKey), либо обновления были синхронизированы до применения исправления KB3159706. В результате клиент или сервер не могут корректно обработать пакет и установка прерывается с кодом 0xc1800118.
Короткое определение: 0xc1800118 — несогласованность статуса шифрования файла обновления в базе WSUS.
Перед началом — подготовка
- Сделайте резервную копию SUSDB (базы WSUS). Если у вас кластер резервного копирования — сохраните копию перед изменениями.
- Выполняйте операции с правами администратора на сервере WSUS (локально или по RDP).
- Операции удаления и синхронизации могут занимать много времени; планируйте окно обслуживания.
Пошаговое исправление ошибки 0xc1800118
1. Определите, в плохом ли состоянии WSUS
Запустите SQL-запрос к базе SUSDB (через SQL Server Management Studio или sqlcmd). Если результат TotalResults > 0 — есть проблемные файлы.
select TotalResults = Count(*)
from tbFile
where (IsEncrypted = 1 and DecryptionKey is NULL)
or (FileName like '%14393%.esd' and IsEncrypted = 0)Пояснение: запрос ищет файлы, помеченные как зашифрованные без ключа дешифрования, а также файлы ESD с номеров сборки 14393 (версия 1607), которые помечены как незашифрованные — это индикатор рассинхронизации.
2. Отключите классификацию “Upgrades”
Чтобы предотвратить повторную синхронизацию проблемных пакетов, временно отключите классификацию “Upgrades” в WSUS (в английской локализации эта классификация называется “Upgrades”). Выполните в PowerShell на сервере WSUS:
Get-WsusClassification | Where-Object {$_.Classification.Title -eq "Upgrades"} | Set-WsusClassification -DisableПосле выполнения проверьте, что классификация действительно отключена в консоли WSUS.
3. Удалите ранее синхронизированные пакеты обновлений версии 1607
Выполните на верхнем сервере WSUS следующие команды PowerShell. Операция удаления может длиться больше 30 минут на больших инсталляциях — PowerShell может выглядеть «зависшим», просто дождитесь завершения.
$s = Get-WsusServer
$version1607Updates = $s.SearchUpdates("version 1607")
$version1607Updates | ForEach-Object { $_.Decline() }
$version1607Updates | ForEach-Object { $s.DeleteUpdate($_.Id.UpdateId) }Примечание: строка поиска “version 1607” предназначена для англоязычных заголовков. Для других локализаций замените текст на соответствующий заголовок обновления на вашем языке.
Важно: не прерывайте команду удаления; большая база и множество записей требуют времени.
4. Включите классификацию “Upgrades” обратно
После удаления проверьте, что проблемных пакетов больше нет, затем снова включите классификацию:
Get-WsusClassification | Where-Object {$_.Classification.Title -eq "Upgrades"} | Set-WsusClassification5. Удалите записи файлов из таблицы tbFile в SUSDB
Если шаги выше не решили проблему, удалите записи файлов, соответствующих проблемным пакетам, из таблицы tbFile. Выполните следующий блок SQL (на верхнем сервере WSUS):
declare @NotNeededFiles table (FileDigest binary(20) UNIQUE);
insert into @NotNeededFiles(FileDigest)
(select FileDigest from tbFile where FileName like '%14393%.esd' except select FileDigest from tbFileForRevision);
delete from tbFileOnServer where FileDigest in (select FileDigest from @NotNeededFiles);
delete from tbFile where FileDigest in (select FileDigest from @NotNeededFiles);Пояснение: сначала формируется набор ненужных файлов (по совпадению имени и отсутствию ревизий), затем удаляются их связи с серверами и сами записи файлов.
6. Выполните полную синхронизацию WSUS
После очистки таблиц запустите синхронизацию:
$sub = $s.GetSubscription()
$sub.StartSynchronization()Дождитесь завершения синхронизации и проверьте в консоли WSUS — новые записи должны появиться корректно.
7. Если ошибка остаётся — остановите службу Windows Update и очистите локальную папку
На клиенте или на сервере, где ошибка всё ещё проявляется, выполните в командной строке от администратора:
net stop wuauserv
del /f /s /q %windir%\SoftwareDistribution\DataStore\*
net start wuauservАльтернатива: можно переименовать папку SoftwareDistribution вместо удаления, если вы предпочитаете сохранить резервную копию.
8. Сканирование и проверка
Запустите проверку обновлений (Windows Update или принудительную регистрацию клиента с WSUS). Убедитесь, что обновления загружаются и устанавливаются без ошибки 0xc1800118.
Что делать, если ничего не помогло
- Проверьте, применён ли фикc KB3159706 на серверах синхронизации (если применимо).
- Рассмотрите возможность полного удаления проблемных пакетов из консоли WSUS вручную и повторной синхронизации с Microsoft Update.
- Как крайняя мера — восстановите SUSDB из резервной копии до момента появления ошибки и повторите процесс корректно.
Альтернативные подходы и рекомендации
- Временно исключите клиентов из одного линейного цикла обновлений и обновите критические машины вручную.
- Если у вас Distributed File Share (DFS) для контента WSUS, проверьте консистентность реплик файлов на всех уровнеях.
- Если WSUS управляется SCCM/ConfigMgr, проверьте политики и распределение пакетов через узел управления.
Модель принятия решений (flowchart)
flowchart TD
A[Появилась ошибка 0xc1800118] --> B{Проблема на WSUS?
'проверить SQL-запрос'}
B -- Да --> C[Отключить 'Upgrades']
C --> D[Удалить пакеты 1607]
D --> E[Удалить записи из tbFile]
E --> F[Запустить полную синхронизацию]
F --> G{Ошибка исчезла?}
G -- Да --> H[Наблюдать систему]
G -- Нет --> I[Остановить wuauserv на клиентах и очистить SoftwareDistribution]
I --> J[Повторить проверку]
B -- Нет --> K[Проверить клиентские журналы WindowsUpdate.log и события]Контрольный список для ролей
Для администратора WSUS:
- Резервная копия SUSDB сделана
- Отключена классификация “Upgrades”
- Выполнено удаление пакетов 1607
- Удалены записи из tbFile
- Запущена полная синхронизация
- Включена классификация обратно
Для специалиста службы поддержки (helpdesk):
- Остановлен wuauserv и очищена папка SoftwareDistribution (если требуется)
- Проведена проверка обновлений на клиенте
- При необходимости — переведён клиент на ручную установку обновлений
Критерии приёмки
- В консоли WSUS запрос к tbFile не возвращает проблемных записей (TotalResults = 0).
- Клиенты успешно загружают и устанавливают обновления без кода 0xc1800118.
- Логи WindowsUpdate и серверные журналы WSUS не содержат повторяющихся ошибок связанных с ESD-файлами версии 14393.
Частые ошибки и когда метод может не сработать
- Если проблема возникла из-за повреждённого контента на стороне Microsoft Update (редко), локальные манипуляции с SUSDB не помогут — нужно дождаться исправления на стороне сервиса или обратиться в поддержку Microsoft.
- Если используется сторонний прокси/антивирус, блокирующий загрузку контента, устраните это прежде, чем повторять синхронизацию.
Быстрый справочник (cheat sheet)
- Проверка состояния: SQL-запрос к tbFile (см. выше).
- Отключение классификации: PowerShell Get-WsusClassification … Set-WsusClassification -Disable.
- Удаление пакетов: $s = Get-WsusServer; $s.SearchUpdates(“version 1607”) … DeleteUpdate.
- Очистка клиента: net stop wuauserv; del %windir%\SoftwareDistribution\DataStore*; net start wuauserv.
Резюме
Ошибка 0xc1800118 чаще всего связана с несогласованностью статуса шифрования файлов обновлений в базе WSUS. Последовательность: определить проблемные записи, временно отключить классификацию “Upgrades”, удалить синхронизированные пакеты версии 1607, очистить таблицы tbFile и выполнить полную синхронизацию — решает большинство случаев. Если после этого проблема остаётся, очистка локальной папки SoftwareDistribution и анализ логов помогут локализовать проблему.
Важно: все операции с базой данных и удалением контента выполняйте в окне обслуживания и после создания резервной копии SUSDB.
Похожие материалы
Choicejacking — защита телефона при зарядке
Как вернуть игру на GOG — инструкция
ARC Welder: запуск Android‑приложений в Chrome
OpenDNS: настройка и защита сети
Game Dashboard в Android 12: включение и советы