La guía de solución de problemas del cliente de Windows Update
Las actualizaciones de Windows son un componente crítico de los sistemas operativos tanto del cliente como del servidor de Windows. Mantienen Windows seguro y se supone que son automáticos. Pero cuando necesita borrar el caché de Windows Update o lidiar con un "El cliente de Windows Update no pudo detectar con error", esa naturaleza automática pronto cambia.
En este artículo, aprenderá a solucionar problemas de actualizaciones de Windows a nivel de cliente. Aprenderá cómo funcionan las actualizaciones de Windows (en un nivel alto), cómo realizar una solución de problemas básica utilizando registros y cómo solucionar problemas comunes de Windows Update.
Requisitos previos
Para asegurarse de que todos los pasos que cubre este tutorial se apliquen a usted, asegúrese de tener lo siguiente:
- Una máquina con Windows 7+ o Windows Server 2012+: el entorno de demostración utilizado en este tutorial ejecutaba Windows 10 Build 1909, pero Windows 7 (y posiblemente versiones anteriores) también funcionarán.
- Inicié sesión en Windows como usuario administrativo. Necesitará ejecutar algunos comandos como administrador.
El Agente de actualización de Windows (WUA)
El principal culpable cuando se trata de problemas con Windows Update es el agente de Windows Update. El agente se encarga de coordinar la detección, descarga e instalación de actualizaciones. El agente es el que coordina el servicio de Windows Update (wuauserv) y es una biblioteca DLL ubicada en C:\Windows\System32 llamada wuaueng.dll .
A veces, en Windows 8.1/Windows Server 2012 y sistemas operativos anteriores, era necesario actualizar el agente a una versión posterior. Aunque actualizar el agente es mucho menos común y necesario, si está ejecutando un sistema operativo antiguo, debe asegurarse de que esté ejecutando la última versión del agente.
Para verificar la versión del agente instalada en su computadora:
- Abra el Explorador de archivos de Windows.
- Navegue hasta la carpeta C:\Windows\System32.
- Busque el archivo wuaueng.dll, haga clic derecho sobre él y vaya a Propiedades.
- En las ventanas Propiedades, haga clic en la pestaña Detalles como se muestra a continuación. La versión WUA será la versión de archivo.
Normalmente, con Windows 10 y versiones posteriores, la WUA siempre estará en la última versión. Sin embargo, para estar seguro, asegúrese de consultar la documentación de Microsoft.
Cómo solucionar problemas de actualización de Windows
En lugar de brindarle más información sobre las actualizaciones de Windows, vayamos al grano. Veamos cómo puede borrar el caché de actualizaciones de Windows y potencialmente corregir muchos de esos molestos mensajes de error "El cliente de actualización de Windows no pudo detectar con error" que recibe.
Reproduzca el problema e inspeccione el registro de actualización de Windows
Para solucionar cualquier problema en una computadora, debe poder reproducirlo. Buscar un problema que sólo aparece aleatoriamente puede ser una de las tareas más molestas que existen.
Antes de cambiar algo en la computadora, primero debe invocar un proceso de actualización completo. Este proceso de actualización detectará las actualizaciones disponibles y, dependiendo de si tiene configuradas las descargas e instalación automáticas, también descargará e instalará las actualizaciones.
Para iniciar el proceso de actualización en Windows 10:
- Haga clic en el menú Inicio y escriba powershell.
- Haga clic derecho en Windows PowerShell y haga clic en Ejecutar como administrador.
- En su consola PowerShell, cree un nuevo objeto COM AutoUpdate e invoque el método
DetectNow(). PowerShell le brinda acceso programático al objeto COM AutoUpdate para invocar el método que inicia el agente de Windows Update.
(New-Object -ComObject Microsoft.Update.AutoUpdate).DetectNow()4. Puede ver que el objeto COM AutoUpdate también tiene otros métodos que pueden resultar útiles en el futuro.
Si está ejecutando Windows 8.1/Server 2012 o anterior, también puede usar el cliente de Windows Update (C:\Windows\System32\wuauclt.exe) con el parámetro
/detectnow. Sin embargo, a partir de Windows 10, PowerShell ha reemplazado este modificador.
Cuando ejecuta el comando de PowerShell anterior, no debería obtener ningún resultado. ¿Cómo sabes que hizo algo? Consulte el registro de actualización de Windows.
5. Mientras aún está en PowerShell, ejecute el comando Get-WindowsUpdateLog. Este comando recopila todos los eventos de Windows Update y crea un archivo de texto WindowsUpdate.log en el directorio actual.
Windows 10 utiliza el seguimiento de eventos para Windows (ETW) para generar registros de diagnóstico. Ya no puede leer el archivo de registro C:\Windows\System32\WindowsUpdate.log directamente.
6. Inspeccione el archivo WindowsUpdate.log y debería ver algunas líneas similares a las siguientes. Estas líneas indican cuándo se inicia la WUA. Desde aquí, desplácese hacia abajo y observe si ve algún problema.
Confirmar que se iniciaron los servicios críticos
Las actualizaciones de Windows dependen de cuatro servicios de Windows para funcionar correctamente:
- Servicio de transferencia inteligente en segundo plano (BITS)
- Servicio Actualización de Windows
- Servicios criptográficos
- instalador de ventanas
Si se detiene cualquiera de los servicios anteriores (excluyendo Windows Installer), las actualizaciones no funcionarán.
Para verificar servicios importantes, use la opción Administrador de servicios de Windows o use PowerShell. Como probablemente ya tenga PowerShell abierto, sigamos ese camino.
Para comprobar el estado de cada servicio, utilice el comando Get-Service de PowerShell como se muestra a continuación.
Get-Service -Name wuauserv,bits,cryptsvc
Observe a continuación que ambos servicios tienen un Estado de En ejecución. Si no ve esto, deberá iniciarlos.
Para iniciar los servicios, presione la flecha hacia arriba en su teclado para que aparezca el último comando y luego agregue el comando Start-Service al final como se muestra a continuación.
Get-Service -Name wuauserv,bits,cryptsvc | Start-ServiceBorrar la caché de actualización de Windows
Si los servicios se están ejecutando y todavía tienes problemas con las actualizaciones automáticas, es hora de borrar el caché de Windows Update. Cuando Windows descarga e instala actualizaciones, descarga metadatos y, a veces, almacena en caché los archivos binarios de cada actualización.
Dependiendo de lo que defina como "caché", existen diferentes niveles de intrusión que puede aplicar a este enfoque. Deberías empezar por el menos intrusivo y volver a probar. Si aún ve el problema, continúe con el siguiente paso de solución de problemas.
Eliminación de archivos DAT de Qmgr
Una de las formas menos intrusivas de borrar el caché de Windows Update es eliminar todos los archivos qmgr de la carpeta %ALLUSERSPROFILE%\Application Data\Microsoft\Network\Downloader. Pero primero, debe detener todos los servicios aplicables mencionados anteriormente.
Get-Service -Name wuauserv,bits,cryptsvc | Stop-ServiceUna vez que haya detenido todos los servicios, ejecute lo siguiente:
Remove-Item -Path "$env:ALLUSERSPROFILE\Application Data\Microsoft\Network\Downloader\qmgr*.dat"Al intentar eliminar archivos qmgr, es posible que reciba un error que indique "El proceso no puede acceder al archivo porque está siendo utilizado por otro proceso". Si es así, reinicie su computadora e inténtelo nuevamente. Si el error continúa, reinicie Windows en modo seguro y vuelva a intentarlo.
PowerShell debería eliminar todas las actualizaciones de caché. Una vez hecho esto, inicia los servicios nuevamente y ¡cruza los dedos!
Get-Service -Name wuauserv,bits,cryptsvc | Start-ServiceVolviéndose nuclear: restablecer la caché de actualizaciones de Windows
Si el paso anterior no ayudó, es hora de volverse nuclear. Es hora de restablecer completamente todo el sistema de almacenamiento en caché de Windows Update a la configuración predeterminada.
La “caché de actualización de Windows” no es realmente un componente; es una combinación de componentes. En las secciones anteriores, simplemente estabas manipulando los servicios y el sistema de archivos. Windows Update también tiene configuraciones en el registro y registra muchos archivos DLL diferentes.
Ahora veamos un script de PowerShell que puede usar para restablecer el caché de Windows Update, que realizará las modificaciones necesarias en el registro, eliminará las actualizaciones almacenadas en caché y también solucionará algunos problemas comunes con Windows Server Update Services (WSUS).
Para ejecutar el siguiente script:
- Haga clic en su menú de inicio y escriba ise.
- Haga clic derecho en PowerShell ISE y haga clic en Ejecutar como administrador.
- Haga clic en Ver y luego haga clic en Mostrar panel de script. Esta acción debería abrir un lugar donde puedas escribir un guión.
- Copie el siguiente script en el panel de script.
Write-Host 'Stopping all necessary services…'
Get-Service -Name wuauserv,bits,cryptsvc,msiserver | Stop-Service
Write-Host 'Removing all qmgr.dat files…'
Remove-Item -Path "$env:ALLUSERSPROFILE\Application Data\Microsoft\Network\Downloader\qmgr*.dat"
Write-Host 'Backing up Windows Update cache folders…'
Rename-Item -Path "$env:SYSTEMROOT\SoftwareDistribution\DataStore" -NewName 'DataStore.bak'
Rename-Item -Path "$env:SYSTEMROOT\SoftwareDistribution\Download" -NewName 'Download.bak'
Rename-Item -Path "$env:SYSTEMROOT\System32\catroot2" -NewName 'catroot2.bak'
Write-Host 'Resetting BITS and Windows Update services security descriptors…'
$null = Start-Process -FilePath 'sc.exe' -ArgumentList 'sdset bits D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)'
$null = Start-Process -FilePath 'sc.exe' -ArgumentList 'sdset wuauserv D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)'
Write-Host 'Re-registering all requisite DLLs…'
$dlls = @(
'atl.dll'
'urlmon.dll'
'mshtml.dll'
'shdocvw.dll'
'browseui.dll'
'jscript.dll'
'vbscript.dll'
'scrrun.dll'
'msxml.dll'
'msxml3.dll'
'msxml6.dll'
'actxprxy.dll'
'softpub.dll'
'wintrust.dll'
'dssenh.dll'
'rsaenh.dll'
'gpkcsp.dll'
'sccbase.dll'
'slbcsp.dll'
'cryptdlg.dll'
'oleaut32.dll'
'ole32.dll'
'shell32.dll'
'initpki.dll'
'wuapi.dll'
'wuaueng.dll'
'wuaueng1.dll'
'wucltui.dll'
'wups.dll'
'wups2.dll'
'wuweb.dll'
'qmgr.dll'
'qmgrprxy.dll'
'wucltux.dll'
'muweb.dll'
'wuwebv.dll'
)
foreach ($dll in $dlls) {
regsvr32.exe "$env:SYSTEMROOT\System32\$dll" /s
}
Write-Host 'Removing WSUS registry values…'
@('AccountDomainSid','PingID','SusClientId','SusClientIDValidation') | ForEach-Object {
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" -Name $_ -ErrorAction Ignore
}
## Resets computer group membership
Write-Host 'Resetting WSUS client cookie..,'
$null = wuauclt.exe /resetauthorization
Write-Host 'Starting all necessary services…'
Get-Service -Name wuauserv,bits,cryptsvc | Start-Service
Write-Host 'Initiating update cycle…'
(New-Object -ComObject Microsoft.Update.AutoUpdate).DetectNow()
Write-Host 'Windows Update reset complete.'5. Haga clic en Archivo —> Guardar y guarde el script en algún lugar de su computadora. Este tutorial asumirá que está en C:\FixWindowsUpdates.ps1.
6. Haga clic en el triángulo verde en PowerShell ISE para ejecutar el script.
Si eres más fanático de una GUI, también puedes encontrar una herramienta que realiza pasos similares. Pero no puedo confirmar que cubra exactamente los mismos pasos indicados en el script de PowerShell anterior.
Conclusión
Obtener las actualizaciones necesarias para descargarlas e instalarlas automáticamente en segundo plano en una máquina con Windows requiere una organización de muchas tareas. Aunque es posible que se encuentre con docenas de mensajes de error diferentes, los consejos y scripts que ha aprendido en esta guía le ayudarán a solucionar casi todos ellos.





