Windows Update vuelve a ofrecer KB5034765 y falla con 0x80070002 en Windows 11 23H2: causas y solución paso a paso

La actualización acumulativa KB5034765 para Windows 11 23H2 ya está instalada, pero Windows Update insiste en ofrecerla y termina con el error 0x80070002. En esta guía verás por qué ocurre y cómo resolverlo: comprobar el estado real, limpiar la caché, ocultar el paquete y reparar el sistema.

Índice

Resumen del caso

El equipo indica que la actualización de seguridad y calidad KB5034765 (liberada alrededor de mediados de febrero de dos mil veinticuatro) ya se encuentra instalada. Sin embargo, el módulo de Windows Update vuelve a detectarla como pendiente y, al intentar aplicarla de nuevo, el proceso finaliza con el código de error 0x80070002. Cuando se ejecuta el instalador independiente (.msu), el mensaje es “ya está instalada”.

Este comportamiento es típico de una detección inconsistente provocada por entradas corruptas o incompletas en la caché de actualización o en el Component Store (almacén de componentes de Windows, también conocido como WinSxS). La solución pasa por verificar el estado real del paquete, restablecer los componentes de Windows Update, y—si procede—ocultar el paquete para evitar su reoferta, además de reparar integridad del sistema.

Causa y alcance

El código 0x80070002 se interpreta comúnmente como “archivo no encontrado” y se relaciona con archivos faltantes o rutas incorrectas durante el proceso de actualización. En el contexto de un acumulativo que ya figura como instalado, el fallo suele ser cosmético: la actualización se reofrece por un problema de caché o de metadatos, no porque falten realmente los binarios del paquete.

  • Si el paquete figura como instalado o reemplazado (estado Installed o Superseded), la reoferta es fruto de detección errónea.
  • Si no figura, puede existir un problema genuino en el almacén de componentes u otros prerequisitos que impiden el registro del paquete.

Comprobación del estado del paquete

Antes de cambiar nada, valida que KB5034765 esté presente. Abre PowerShell como Administrador y ejecuta:

dism /online /get-packages | findstr 5034765
Opcional: comprobación adicional
Get-HotFix | Where-Object { $_.HotFixID -eq "KB5034765" }

Interpretación:

  • Si aparece en la salida de dism con estado Install Pending, Installed o Superseded, el sistema ya tiene el paquete o uno que lo remplaza.
  • Si Get-HotFix lo muestra, es una confirmación adicional; no todos los acumulativos figuran en este listado, por lo que su ausencia aquí no implica que no esté instalado.

Consejo: en ocasiones, el paquete acumulativo más reciente sustituye al anterior. Por eso puedes ver estados como Superseded, lo que refuerza la hipótesis de detección errónea si Windows Update insiste en ofrecer el anterior.

Restablecer componentes de actualización

Este procedimiento borra y regenera la caché local utilizada por Windows Update, así como el catálogo criptográfico temporal asociado. Ejecuta CMD como Administrador y lanza, en este orden:

net stop bits
net stop wuauserv
net stop cryptsvc

ren %systemroot%\SoftwareDistribution SoftwareDistribution.old
ren %systemroot%\System32\catroot2 catroot2.old

\:: Opcional; puede no existir y es normal que no lo encuentre
del /q /f "%ALLUSERSPROFILE%\Microsoft\Network\Downloader\qmgr\*.dat"

net start bits
net start wuauserv
net start cryptsvc 

Qué hace cada paso:

Servicio o carpetaFunciónEfecto del restablecimiento
BITSTransferencia en segundo planoDetiene descargas en curso para liberar archivos bloqueados
WUAUSERVMotor de Windows UpdatePermite renombrar la caché SoftwareDistribution
CRYPTSVCServicios criptográficosLibera catroot2 para regenerar catálogos
SoftwareDistributionCaché de metadatos y descargasSe crea una nueva estructura limpia al reiniciar el servicio
catroot2Almacén temporal de catálogosSe regenera con firmas y catálogos frescos

Tras ejecutar los comandos, reinicia el equipo. Si el error era de caché, el sistema dejará de reofrecer el paquete o la detección se corregirá.

Ocultar la actualización

Si el paquete KB5034765 figura como instalado y aun así se reofrece, ocúltalo hasta que llegue un acumulativo posterior que lo reemplace completamente.

Opción con herramienta de ocultación

La utilidad de diagnóstico Mostrar u ocultar actualizaciones permite marcar manualmente el paquete problemático para que no aparezca. Si no puedes usarla en tu entorno, pasa a las alternativas de más abajo.

Alternativa con PowerShell

Usa el módulo PSWindowsUpdate en una consola de PowerShell con privilegios elevados:

Set-ExecutionPolicy RemoteSigned -Scope Process -Force
Install-Module -Name PSWindowsUpdate -Force

Ocultar específicamente el paquete

Hide-WindowsUpdate -KBArticleID KB5034765 -Hide -Verbose 

Esto marcará el paquete para que no se presente de nuevo en el escaneo. Más adelante podrás revertirlo con -Hide:$false.

Mitigación con pausa

Como medida rápida, activa la pausa temporal en Configuración → Windows Update → Pausar por una o varias semanas. Esta pausa evita reintentos mientras limpias la caché o esperas el acumulativo siguiente que sustituya al paquete conflictivo.

Reparación del almacén y de archivos del sistema

Si tras limpiar la caché persiste el comportamiento, repara la integridad del Component Store y del sistema de archivos:

DISM /Online /Cleanup-Image /RestoreHealth
sfc /scannow
  • DISM analiza y repara la imagen de Windows, corrigiendo manifest y metadatos en WinSxS.
  • SFC restaura archivos del sistema dañados desde el almacén de componentes.

Al finalizar, reinicia y verifica de nuevo el comportamiento de Windows Update. Si había corrupción en el almacén, la detección de paquetes volverá a ser coherente.

Verificaciones posteriores

  • Abre Configuración → Windows Update y pulsa Buscar actualizaciones. Comprueba si el paquete deja de aparecer o si aparece un acumulativo más reciente.
  • En Historial de actualizaciones, confirma que el paquete está marcado como instalado o que figura un reemplazo posterior.
  • Si ocultaste el paquete, verifica desde PSWindowsUpdate que su estado sea Hidden.

Explicación técnica

Los acumulativos mensuales engloban cientos de archivos, manifiestos y catálogos. Una entrada parcial en SoftwareDistribution o en los catálogos temporales de catroot2 puede provocar que la fase de detección (Scan) piense que el paquete falta, aunque la fase de instalación (Install) reconozca que ya se encuentra. Por eso, al ejecutar el instalador independiente, se muestra “ya instalado”, mientras que el agente de actualización insiste en ofrecerlo. Restablecer la caché y regenerar catálogos resuelve esta divergence.

Casos especiales

  • Instalador independiente muestra “ya instalado”: indica fenómeno cosmético. Ocultar el paquete y limpiar la caché suelen bastar.
  • Otros acumulativos fallan: repara el almacén con DISM y SFC. Considera además DISM /Online /Cleanup-Image /StartComponentCleanup para optimizar componentes obsoletos.
  • Reintentos tras hibernación o suspensión: programa un reinicio tras el restablecimiento de servicios para garantizar la regeneración completa de la caché.

Solucionador integrado

En algunos entornos, correr el solucionador de problemas de Windows Update ayuda a limpiar reglas de detección y reindexar componentes:

Configuración → Sistema → Solucionar problemas → Otros solucionadores de problemas → Windows Update → Ejecutar

Al terminar, vuelve a comprobar si la actualización deja de presentarse.

Diagnóstico con registros

  • Visor de eventos: Registros de Windows → Configuración, origen WindowsUpdateClient. Revisa entradas recientes alrededor del momento del error.
  • Registro CBS: C:\Windows\Logs\CBS\CBS.log. Busca menciones a la cadena del paquete o a errores de hash.
  • Registro DISM: C:\Windows\Logs\DISM\dism.log. Útil si DISM reporta correcciones o problemas de manifiestos.

Lista de comprobación

  • Confirmar estado real del paquete con dism y, opcionalmente, Get-HotFix.
  • Detener servicios y renombrar SoftwareDistribution y catroot2.
  • Reiniciar y forzar un escaneo de actualizaciones desde Configuración.
  • Ocultar el paquete si ya figura instalado y se reofrece.
  • Ejecutar DISM y SFC si persisten fallos en otros paquetes.

Guía paso a paso ampliada

Verificación con línea de comandos

# Buscar el paquete por su identificador
dism /online /get-packages | findstr 5034765

Listar hotfix y filtros de seguridad (puede no incluir todos los acumulativos)

Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 20 

Resultado esperado: la cadena del paquete debería aparecer como instalada o reemplazada. Si no aparece, ejecuta la reparación de almacén y reintenta el escaneo.

Reinicio limpio de caché

net stop bits & net stop wuauserv & net stop cryptsvc
ren %systemroot%\SoftwareDistribution SoftwareDistribution.old
ren %systemroot%\System32\catroot2 catroot2.old
net start bits & net start wuauserv & net start cryptsvc

Si los comandos de ren devuelven “acceso denegado”, asegúrate de que los servicios estén detenidos y que la consola se haya abierto como Administrador.

Ocultación con módulo de PowerShell

# Instala y usa PSWindowsUpdate
Set-ExecutionPolicy RemoteSigned -Scope Process -Force
Install-Module -Name PSWindowsUpdate -Force

Oculta el acumulativo específico

Hide-WindowsUpdate -KBArticleID KB5034765 -Hide -Verbose

Más adelante, para desocultar:

Hide-WindowsUpdate -KBArticleID KB5034765 -Hide:\$false -Verbose 

Verificación de hora del sistema

Una hora incorrecta puede romper validaciones de certificados y firmas. Comprueba y corrige la sincronización:

w32tm /query /status
w32tm /resync

Confirma que la zona horaria coincida con tu ubicación desde Configuración → Hora e idioma.

Script de automatización

Si atiendes varios equipos, este script de PowerShell automatiza la verificación, el restablecimiento y la ocultación del paquete problemático. Ejecuta como Administrador:

$ErrorActionPreference = 'Stop'

Comprobar si el paquete aparece instalado o reemplazado

\$kb = 'KB5034765'
Write-Host "Comprobando estado de \$kb..."
\$dismOut = (dism /online /get-packages) 2>&1
\$present = \$dismOut -match '5034765'

if (\$present) {
Write-Host "\$kb aparece en la imagen. Procediendo a restablecer componentes y ocultar el paquete..." -ForegroundColor Green
} else {
Write-Host "\$kb no se encontró en la salida de DISM. Se intentará limpieza y reparación." -ForegroundColor Yellow
}

Detener servicios

'bits','wuauserv','cryptsvc' | ForEach-Object {
Write-Host "Deteniendo servicio \$*..."
sc.exe stop \$* | Out-Null
}

Renombrar cachés

\$sd = Join-Path \$env\:SystemRoot 'SoftwareDistribution'
\$cr = Join-Path \$env\:SystemRoot 'System32\catroot2'
if (Test-Path \$sd) { Rename-Item \$sd (\$sd + '.old') -ErrorAction SilentlyContinue }
if (Test-Path \$cr) { Rename-Item \$cr (\$cr + '.old') -ErrorAction SilentlyContinue }

Iniciar servicios

'bits','wuauserv','cryptsvc' | ForEach-Object {
Write-Host "Iniciando servicio \$*..."
sc.exe start \$* | Out-Null
}

Reparación de imagen y archivos

Write-Host "Ejecutando DISM y SFC..."
Start-Process -FilePath 'cmd.exe' -ArgumentList '/c','DISM /Online /Cleanup-Image /RestoreHealth' -Wait -Verb RunAs
Start-Process -FilePath 'cmd.exe' -ArgumentList '/c','sfc /scannow' -Wait -Verb RunAs

Instalar PSWindowsUpdate y ocultar el paquete si se detecta reoferta

try {
if (-not (Get-Module PSWindowsUpdate -ListAvailable)) {
Install-Module -Name PSWindowsUpdate -Force -Scope AllUsers
}
Import-Module PSWindowsUpdate -Force
Write-Host "Ocultando \$kb..."
Hide-WindowsUpdate -KBArticleID \$kb -Hide -Verbose
} catch {
Write-Warning "No fue posible ocultar el paquete con PSWindowsUpdate: \$($\_.Exception.Message)"
}

Write-Host "Completado. Reinicia el equipo y ejecuta un nuevo escaneo desde Configuración → Windows Update." 

Resumen de acciones y resultados

AcciónComandoResultado esperado
Comprobar estado del paquetedism /online /get-packages | findstr 5034765El paquete aparece como instalado o reemplazado
Restablecer cachénet stop/start y ren de carpetasRegeneración limpia de catálogos y metadatos
Ocultar reofertaHide-WindowsUpdate -KBArticleID KB5034765 -HideEl paquete deja de presentarse en el escaneo
Reparar almacénDISM /RestoreHealth y sfc /scannowCorrección de manifiestos y archivos dañados
ValidarEscaneo desde ConfiguraciónHistorial coherente y sin reoferta del paquete

Errores relacionados

Si además de 0x80070002 ves otros códigos, esta guía puede acompañarse con las siguientes pistas:

CódigoIndicioAcción recomendada
0x800f081fOrígenes de reparación ausentesRepetir DISM con orígenes válidos o ISO montado
0x800f0988Componentes en estado inconsistenteStartComponentCleanup y luego RestoreHealth
0x8024200dDescarga incompleta o dañadaRestablecer SoftwareDistribution y repetir descarga

Buenas prácticas

  • Mantén la fecha y hora correctas; utiliza sincronización de hora.
  • Evita borrar manualmente archivos del sistema fuera de los procedimientos documentados.
  • Reinicia después de limpiar caché o de ejecutar DISM/SFC.
  • Cuando aparezca un acumulativo más reciente, desoculta el anterior y reanuda el ciclo normal de parches.

Conclusión

Cuando Windows Update reofrece KB5034765 y falla con 0x80070002 pese a que el instalador independiente afirma que ya está instalada, la causa más probable es una inconsistencia de caché o de catálogos. La secuencia verificar → restablecer → ocultar → reparar corrige la detección y evita reintentos inútiles. Tras el siguiente acumulativo mensual, podrás desocultar el paquete y continuar con el mantenimiento habitual del sistema sin ruidos en el historial de actualizaciones.


Apéndice práctico

Comandos clave reunidos

# Verificar presencia del paquete
dism /online /get-packages | findstr 5034765
Get-HotFix | Where-Object { $_.HotFixID -eq "KB5034765" }

Restablecer caché de actualización (CMD)

net stop bits
net stop wuauserv
net stop cryptsvc
ren %systemroot%\SoftwareDistribution SoftwareDistribution.old
ren %systemroot%\System32\catroot2 catroot2.old
del /q /f "%ALLUSERSPROFILE%\Microsoft\Network\Downloader\qmgr\*.dat"
net start bits
net start wuauserv
net start cryptsvc

Ocultar el paquete específico

Set-ExecutionPolicy RemoteSigned -Scope Process -Force
Install-Module -Name PSWindowsUpdate -Force
Hide-WindowsUpdate -KBArticleID KB5034765 -Hide -Verbose

Reparar almacén y archivos

DISM /Online /Cleanup-Image /RestoreHealth
sfc /scannow 

Con estas acciones, el problema de reoferta y el error de detección quedan saneados. Si además necesitas instalar otros parches que no sean el acumulativo mencionado, puedes hacerlo manualmente desde el catálogo oficial cuando corresponda. Para el acumulativo citado, no es necesario repetir una instalación que ya consta en el sistema.

Índice