Se si tratta nell'aggiornamento KB5003637, ieri ho ricevuto errore 0x80070002 per tre tentativi di fila e ho dovuto sbloccare la situazione con questo script (leggermente modificato rispetto all'originale per pulire tutti i file qmgr e non solo quelli con estensione
.dat):
@echo off
:: Created by: Shawn Brink
:: Created on: October 1, 2015
:: Updated on: June 23, 2021 by Max (Eng2ita.net)
:: Tutorial: https://www.tenforums.com/tutorials/24742-reset-windows-update-windows-10-a.html
:: Prompt to Run as administrator
Set "Variable=0" & if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs"
fsutil dirty query %systemdrive% >nul 2>&1 && goto :(Privileges_got)
If "%1"=="%Variable%" (echo. &echo. Clicca col tasto destro del mouse sul file e seleziona &echo. "Esegui come amministratore". &echo. Premere un tasto qualsiasi per uscire. &pause>nul 2>&1& exit)
cmd /u /c echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "%~0", "%Variable%", "", "runas", 1 > "%temp%\getadmin.vbs"&cscript //nologo "%temp%\getadmin.vbs" & exit
:(Privileges_got)
:: Checking and Stopping the Windows Update services
set b=0
:bits
set /a b=%b%+1
if %b% equ 3 (
goto end1
)
net stop bits
echo Checking the bits service status.
sc query bits | findstr /I /C:"STOPPED"
if not %errorlevel%==0 (
goto bits
)
goto loop2
:end1
cls
echo.
echo Impossibile resettare Windows Update poichè il servizio "Servizio trasferimento intelligente in background" (bits) non si è arrestato. Si prega di riavviare il computer, e riprovare.
echo.
pause
goto Start
:loop2
set w=0
:wuauserv
set /a w=%w%+1
if %w% equ 3 (
goto end2
)
net stop wuauserv
echo Checking the wuauserv service status.
sc query wuauserv | findstr /I /C:"STOPPED"
if not %errorlevel%==0 (
goto wuauserv
)
goto loop3
:end2
cls
echo.
echo Impossibile resettare Windows Update poichè il servizio "Windows Update" (wuauserv) non si è arrestato. Si prega di riavviare il computer, e riprovare.
echo.
pause
goto Start
:loop3
set app=0
:appidsvc
set /a app=%app%+1
if %app% equ 3 (
goto end3
)
net stop appidsvc
echo Checking the appidsvc service status.
sc query appidsvc | findstr /I /C:"STOPPED"
if not %errorlevel%==0 (
goto appidsvc
)
goto loop4
:end3
cls
echo.
echo Impossibile resettare Windows Update poichè il servizio "Identità applicazione" (appidsvc) non si è arrestato. Si prega di riavviare il computer, e riprovare.
echo.
pause
goto Start
:loop4
set c=0
:cryptsvc
set /a c=%c%+1
if %c% equ 3 (
goto end4
)
net stop cryptsvc
echo Checking the cryptsvc service status.
sc query cryptsvc | findstr /I /C:"STOPPED"
if not %errorlevel%==0 (
goto cryptsvc
)
goto Reset
:end4
cls
echo.
echo Impossibile resettare Windows Update poichè il servizio "Servizi di crittografia" (cryptsvc) non si è arrestato. Si prega di riavviare il computer, e riprovare.
echo.
pause
goto Start
:Reset
Ipconfig /flushdns
del /s /q /f "%ALLUSERSPROFILE%\Application Data\Microsoft\Network\Downloader\qmgr*"
del /s /q /f "%ALLUSERSPROFILE%\Microsoft\Network\Downloader\qmgr*"
del /s /q /f "%SYSTEMROOT%\Logs\WindowsUpdate\*"
if exist "%SYSTEMROOT%\winsxs\pending.xml.bak" del /s /q /f "%SYSTEMROOT%\winsxs\pending.xml.bak"
if exist "%SYSTEMROOT%\winsxs\pending.xml" (
takeown /f "%SYSTEMROOT%\winsxs\pending.xml"
attrib -r -s -h /s /d "%SYSTEMROOT%\winsxs\pending.xml"
ren "%SYSTEMROOT%\winsxs\pending.xml" pending.xml.bak
)
if exist "%SYSTEMROOT%\SoftwareDistribution.bak" rmdir /s /q "%SYSTEMROOT%\SoftwareDistribution.bak"
if exist "%SYSTEMROOT%\SoftwareDistribution" (
attrib -r -s -h /s /d "%SYSTEMROOT%\SoftwareDistribution"
ren "%SYSTEMROOT%\SoftwareDistribution" SoftwareDistribution.bak
)
if exist "%SYSTEMROOT%\system32\Catroot2.bak" rmdir /s /q "%SYSTEMROOT%\system32\Catroot2.bak"
if exist "%SYSTEMROOT%\system32\Catroot2" (
attrib -r -s -h /s /d "%SYSTEMROOT%\system32\Catroot2"
ren "%SYSTEMROOT%\system32\Catroot2" Catroot2.bak
)
:: Reset Windows Update policies
reg delete "HKCU\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /f
reg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\WindowsUpdate" /f
reg delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /f
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\WindowsUpdate" /f
gpupdate /force
:: Reset the BITS service and the Windows Update service to the default security descriptor
sc.exe sdset bits D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)
sc.exe sdset wuauserv D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)
:: Reregister the BITS files and the Windows Update files
cd /d %windir%\system32
regsvr32.exe /s atl.dll
regsvr32.exe /s urlmon.dll
regsvr32.exe /s mshtml.dll
regsvr32.exe /s shdocvw.dll
regsvr32.exe /s browseui.dll
regsvr32.exe /s jscript.dll
regsvr32.exe /s vbscript.dll
regsvr32.exe /s scrrun.dll
regsvr32.exe /s msxml.dll
regsvr32.exe /s msxml3.dll
regsvr32.exe /s msxml6.dll
regsvr32.exe /s actxprxy.dll
regsvr32.exe /s softpub.dll
regsvr32.exe /s wintrust.dll
regsvr32.exe /s dssenh.dll
regsvr32.exe /s rsaenh.dll
regsvr32.exe /s gpkcsp.dll
regsvr32.exe /s sccbase.dll
regsvr32.exe /s slbcsp.dll
regsvr32.exe /s cryptdlg.dll
regsvr32.exe /s oleaut32.dll
regsvr32.exe /s ole32.dll
regsvr32.exe /s shell32.dll
regsvr32.exe /s initpki.dll
regsvr32.exe /s wuapi.dll
regsvr32.exe /s wuaueng.dll
regsvr32.exe /s wuaueng1.dll
regsvr32.exe /s wucltui.dll
regsvr32.exe /s wups.dll
regsvr32.exe /s wups2.dll
regsvr32.exe /s wuweb.dll
regsvr32.exe /s qmgr.dll
regsvr32.exe /s qmgrprxy.dll
regsvr32.exe /s wucltux.dll
regsvr32.exe /s muweb.dll
regsvr32.exe /s wuwebv.dll
regsvr32.exe /s wudriver.dll
netsh winsock reset
netsh winsock reset proxy
:: Set the startup type as automatic
sc config wuauserv start= auto
sc config bits start= auto
sc config DcomLaunch start= auto
:Start
net start bits
net start wuauserv
net start appidsvc
net start cryptsvc
:: Restart computer
cls
echo Riavviare il computer per completare il reset di Windows Update.
echo.
echo Salvare e chiudere le applicazioni aperte, prima di riavviare il computer.
echo.
pause
echo.
echo.
echo.
echo *** Riavvia il computer ora. ***
echo.
pause
shutdown /r /f /t 0
In ogni caso è possibile che uno stesso aggiornamento venga segnalato come installato due volte, come confermato da Microsoft stessa in passato:
https://i.ibb.co/82yjJYm/cumulative-update.pngRiguardo al secondo problema, se ho ben capito, si riferisce allo spazio occupato su disco dall'aggiornamento. In pratica viene effettuata su una cartella di sistema (chiamata WinSxS, o archivio componenti) una copia dei file originali per far sì che si possa tornare indietro all'atto dell'eventuale disinstallazione di un aggiornamento.
Per ulteriori informazioni sulla cartella WinSxS:
https://docs.microsoft.com/it-it/windows-hardware/manufacture/desktop/determine-the-actual-size-of-the-winsxs-folderIn pratica l'Esplora Risorse tende a sovrastimare la dimensione reale della cartella WinSxS, perciò in quell'articolo è spiegato l'esatto comando da digitare sul prompt dei comandi in modalità amministratore. Nello stesso articolo troverà ulteriori collegamenti su come pulire la cartella WinSxS.