Si Windows Update devuelve el error 0x800700b7 al instalar la actualización acumulativa KB5034122 en Windows 10 tras una interrupción, esta guía explica por qué ocurre y cómo resolverlo con un procedimiento probado y seguro, sin reinstalar el sistema.
Síntomas y contexto
Después de interrumpir accidentalmente la instalación de KB5034122 en un equipo Windows 10 x64 (compilación 19041.3570), cada nuevo intento termina con el código 0x800700b7. Se han probado sin éxito sfc /scannow
, DISM /Online /Cleanup-Image
, Restaurar sistema, reinstalación manual del paquete, desinstalación de acumulativas relacionadas y la limpieza de SoftwareDistribution
. En CBS.log aparecen entradas del tipo “HRESULT 0x800700b7 – Already Exists” al intentar registrar catálogos de seguridad. También se detectan catálogos dañados dentro de C:\Windows\System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}
, por ejemplo:
Microsoft-Windows-Portable-Devices-merged-Package~...~10.0.19041.3636.cat
Microsoft-Windows-Printer-Drivers-Package~...~10.0.19041.3636.cat
Causa técnica
El código 0x800700b7 corresponde a ERRORALREADYEXISTS: Windows Update y el servicio de criptografía (CryptSvc
) no pueden volver a registrar un catálogo porque ya existe una entrada inconsistente o duplicada. Esto suele ocurrir cuando:
- La base de datos CatRoot2 (archivo
catdb
de ESENT) se corrompe tras un corte o reinicio durante el proceso de instalación. - Uno o varios archivos .cat del repositorio CatRoot están dañados o con hash erróneo.
Componente | Ubicación | Función | Cuándo intervenir |
---|---|---|---|
CatRoot | %windir%\System32\catroot\{F750E6C3-...} | Almacén de catálogos .cat firmados usados por el sistema. | Cuando hay .cat específicos corruptos (reemplazo selectivo). |
CatRoot2 | %windir%\System32\catroot2 | Base de datos catdb y metadatos que registran catálogos. | Cuando hay errores de registro o duplicados (regeneración). |
SoftwareDistribution | %windir%\SoftwareDistribution | Caché de descargas y estado de Windows Update. | Cuando hay descargas incompletas o colas corruptas (reset). |
Ruta rápida de solución
El enfoque eficaz y de bajo riesgo se basa en tres acciones:
- Regenerar CatRoot2 y, si es necesario, reparar su catdb con
esentutl
. - Reemplazar los .cat dañados en CatRoot por copias sanas.
- Restablecer componentes de Windows Update y relanzar la instalación.
Procedimiento detallado paso a paso
Ejecuta todo con privilegios de administrador en Símbolo del sistema o PowerShell. Si puedes, crea un punto de restauración o una copia de seguridad antes de empezar.
Detener servicios relacionados
En CMD:
net stop wuauserv
net stop bits
net stop cryptsvc
net stop msiserver
En PowerShell (alternativa):
Stop-Service -Name wuauserv,bits,cryptsvc,msiserver -Force
Revisar y, si procede, reparar la base de datos de CatRoot2
Primero una comprobación. Si reporta errores, usar reparación forzada con /p
(implica riesgos; intenta copia previa del archivo):
esentutl /g %windir%\System32\catroot2\catdb
rem Si hay errores:
esentutl /p %windir%\System32\catroot2\catdb
Nota: /p
repara sin verificar integridad lógica completa; úsalo solo si la comprobación lo indica.
Restablecer carpetas de actualización
Renombrar para forzar su recreación en el próximo arranque de servicios:
ren %systemroot%\SoftwareDistribution SoftwareDistribution.old
ren %systemroot%\System32\catroot2 catroot2.old
Reemplazar catálogos dañados en CatRoot
Ubicación objetivo:
C:\Windows\System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}
Necesitarás copias limpias de los .cat afectados. Dos vías seguras:
- Otra máquina con la misma edición y compilación de Windows 10.
- Extracción desde los paquetes oficiales de la actualización acumulativa.
Si no te deja sobrescribir, toma posesión y otorga permisos a Administradores:
takeown /f "C:\Windows\System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\NOMBRE.cat"
icacls "C:\Windows\System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\NOMBRE.cat" /grant Administradores:F
Para verificar que la copia no está dañada, puedes calcular el hash:
certutil -hashfile "RUTA\al\catalogo.cat" SHA256
Arrancar de nuevo los servicios
En CMD:
net start cryptsvc
net start msiserver
net start bits
net start wuauserv
En PowerShell:
Start-Service -Name cryptsvc,msiserver,bits,wuauserv
Relanzar la instalación
Opción a través de Windows Update (recomendado), o instalación manual con DISM o WUSA si ya descargaste el paquete:
wusa "C:\Ruta\al\paquete\windows10.0-kb5034122-x64.msu" /quiet /norestart
Si dispones del .cab:
Dism /Online /Add-Package /PackagePath:"C:\Ruta\al\paquete\windows10.0-kb5034122-x64.cab" /Quiet /NoRestart
Verificación posterior
Comprueba que la actualización quedó registrada y que no hay errores pendientes.
Comprobación con PowerShell
Get-HotFix -Id KB5034122
También puedes listar paquetes del mantenimiento:
Dism /Online /Get-Packages /Format:Table | findstr 5034122
Registro de eventos
Busca eventos de instalación correcta en el canal de Windows Update Client y en Setup:
Get-WinEvent -LogName "Microsoft-Windows-WindowsUpdateClient/Operational" | Where-Object {$_.Id -in 19,43} | Select-Object -First 20 TimeCreated,Id,Message
Get-WinEvent -LogName Setup | Where-Object {$_.Id -in 2,4} | Select-Object -First 20 TimeCreated,Id,Message
Regeneración correcta de CatRoot2
Tras iniciar cryptsvc
, la carpeta catroot2
se recrea con un catdb
nuevo. Si sigues viendo errores ESENT, repite la comprobación con esentutl /g
.
Métodos seguros para obtener catálogos limpios
Extracción desde el paquete de la actualización
Los catálogos viajan dentro del .cab/.msu de la acumulativa. Puedes extraerlos así:
mkdir C:\Temp\KB5034122
expand -F:* "C:\Ruta\al\paquete\windows10.0-kb5034122-x64.cab" C:\Temp\KB5034122
Dentro verás subcarpetas con .mum y .cat. Localiza los que coincidan por nombre con los dañados (por ejemplo, los relacionados con Portable-Devices o Printer-Drivers) y cópialos sobre CatRoot:
copy /Y "C:\Temp\KB5034122\\Microsoft-Windows-Portable-Devices-merged-Package~.cat" "C:\Windows\System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\"
copy /Y "C:\Temp\KB5034122\\Microsoft-Windows-Printer-Drivers-Package~.cat" "C:\Windows\System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\"
Extracción desde otra instalación idéntica
En un equipo sano con la misma edición y compilación, copia los .cat equivalentes desde su CatRoot al tuyo. Verifica hashes si es posible.
Motivos por los que sfc y DISM no lo solucionan
- sfc valida archivos del sistema en uso, pero no reindexa ni repara el repositorio de catálogos.
- DISM /RestoreHealth corrige el almacén de componentes (WinSxS) y manifiestos, no el índice de catálogos de CatRoot2 ni los .cat dañados en CatRoot.
Errores habituales a evitar
- Eliminar CatRoot por completo. No lo borres: contiene catálogos válidos. Limítate a sustituir los que están corruptos.
- Pasar por alto la detención de servicios. Si no detienes
cryptsvc
,wuauserv
ybits
, los archivos quedarán bloqueados o se recrearán de forma inconsistente. - No hacer copia de
catroot2
antes deesentutl /p
. La reparación forzada es útil, pero agresiva. - Mezclar catálogos de compilaciones distintas. Usa catálogos de la misma versión.
Solución alternativa de último recurso
Si persiste el error tras todo lo anterior, una reparación in‑place con un medio de instalación de la misma versión de Windows 10 suele sanear el subsistema de actualización sin perder aplicaciones ni datos. Ejecuta el setup, elige Conservar archivos y aplicaciones y finaliza. Después vuelve a intentar Windows Update.
Guía de actuación rápida
Síntoma | Acción recomendada | Comando clave |
---|---|---|
Mensaje Already Exists en CBS | Regenerar CatRoot2 | ren %windir%\System32\catroot2 catroot2.old |
.cat concretos no validan | Reemplazo selectivo en CatRoot | copy /Y *.cat %systemroot%\System32\catroot\{F750...}\ |
Servicios bloquean archivos | Detener y reiniciar servicios | net stop/start wuauserv bits cryptsvc msiserver |
Descarga en bucle | Reset de caché | ren %windir%\SoftwareDistribution SoftwareDistribution.old |
Post‑instalación | Verificar instalación | Get-HotFix -Id KB5034122 |
Apéndice de comandos útiles
rem Comandos de diagnóstico
findstr /c:"0x800700b7" %windir%\Logs\CBS\CBS.log
Get-WindowsUpdateLog
rem Equivalentes con PowerShell para permisos
\$cat = "C:\Windows\System32\catroot{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\NOMBRE.cat"
icacls \$cat /grant Administradores\:F
rem Comprobación de integridad del sistema y del almacén (por si hubiera otros problemas colaterales)
sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth
Ejemplo práctico aplicado
En un caso real, los catálogos dañados eran Portable‑Devices‑merged y Printer‑Drivers con sufijos de la rama 10.0.19041.3636
. Tras:
- Detener servicios,
- Renombrar
catroot2
ySoftwareDistribution
, - Reemplazar ambos .cat por copias limpias,
- Reiniciar servicios y relanzar Windows Update,
la instalación de KB5034122 se completó correctamente y el sistema quedó actualizado.
Resumen esencial
En una línea: el fallo lo provocaban dos catálogos .cat corruptos; al reemplazarlos, regenerar CatRoot2 y restablecer Windows Update, la acumulativa KB5034122 se instaló sin errores.