Aktualizacja do Windows 10 – błąd 80240020

Jak wiemy dziś 29 lipca wystartowało wielkie wydarzenie związane z premierą Windows 10. Jednak często zdarzają się problemy związane z aktualizacją automatyczną możliwą dzięki irytującej ikonce Uzyskaj system Windows 10, która już od jakiegoś czasu gościła na naszych desktopach. Nie obyło się jednak bez problemów. Na moim komputerze mimo tego iż miałem pobraną instalację Windows 10 w ukrytym folderze na dysku C:\$Windows.~BT nic poza tym się nie wydarzyło. Gdy sprawdziłem w historii aktualizacji widziałem tylko poprawkę „Uaktualnij do wersji Windows 10 Home” ze statusem „Niepowodzenie” jak na obrazku poniżej:
windows update

Szczegóły błędy wskazały na błąd 80240020 – znany numer błędu jeszcze od czasów Windows 2000 – w skrócie oznacza problemy z uprawnieniami użytkownika do instalacji i ściągania poprawek.

error80240020

Musiałem więc znaleźć remedium na problem. Jako, że jestem leniwy i lubię ułatwiać sobie i innym pracę sięgnąłem po skrypt, aby poradzić sobie z rozwiązywaniem problemu:

$ErrorActionPreference = "SilentlyContinue"
$update_folder = 'C:\Windows\SoftwareDistribution\Download\*'
$win10_folder = 'C:\$Windows.~BT'
Stop-Service wuauserv -Force
Sleep 10
Get-ChildItem $win10_folder -Recurse -Force | Select-Object -Expand fullname sort length -Desc | Foreach-Object {Remove-Item $_ -Force -confirm:$false}
Remove-Item $win10_folder -Force
Remove-Item -Path $update_folder -Recurse -Force
$update_folder_info = Get-ChildItem $update_folder.Substring(0,$update_folder.Length-1) | Measure-Object
if ($update_folder_info.Count -eq 0 )
 {
  Start-Service wuauserv
  Sleep 10
  Invoke-Command { wuauclt.exe /detectnow }
  Write-Host "Wymuszam aktualizacje czekaj..."
 }
else
 {
  Write-Host $update_folder + ' nie jest pusty'
 }
 Sleep 20
 Get-Date
 Get-Content C:\Windows\SoftwareDistribution\ReportingEvents.log -last 5

Co robi skrypt? Usuwa ściągniętą instalację Windows 10 (wiem – smuteczek), usuwa zawartość folderu SoftwareDistribution, wymusza ponowne sprawdzenie aktualizacji oraz wyświetla ostatnie 5 wpisów w logach Windows Update. Skrypt ten należy wykonać w konsoli PowerShell uruchomionej w trybie administratora! A potem należy czekać, aż Windows 10 ponownie wystartuje.
Dla niecierpliwych – można sprawdzać status ręcznie gdyż (przynajmniej moja aktualizacja wystartowała w trybie „ultrasilent” co potwierdził wpis w C:\Windows\WindowsUpdate.log – Currently AUX is enabled – so not show any WU Upgrade notifications.) WindowsUpdate nie kwapi się z informowaniem o postępach ;), ale od czego jest PowerShell? 😉

Przydatna komenda:

Select-String -path C:\Windows\SoftwareDistribution\ReportingEvents.log -Pattern „Uaktualnij do wersji Windows”

Wskaże nam wpisy w logu Windows Update dotyczące uaktualnienia do Windows 10. Powodzenia!

Piotr Berent

Piotr Berent od 2002 w pocie czoła pracujący w środowisku IT, obecnie freelancer - Inżynier Systemowy. Entuzjasta wirtualizacji, automatyzacji i rozwiązań opartych o narzędzia open-source.

Przeczytaj także...

3 komentarze

  1. Komin napisał(a):

    A jak wyłączyć powiadomienia o aktualizacji do WIN 10. Nie mam ochoty przechodzić na 10, a te codzienne powiadomienia są irytujące :/

Dodaj komentarz