Rozwiązywanie błędów Windows Update w Windows 11 — przewodnik helpdesku IT na 2026 rok

Praktyczny przewodnik helpdeskowy po diagnostyce błędów Windows Update w Windows 11 24H2: reset składników, DISM, analiza WindowsUpdate.log, WSUS i Intune Update Rings. Kody 0x80070422, 0x800f0922, 0x8024a105 i inne, z gotowymi skryptami PowerShell.

Zaktualizowano: 24 sierpnia 2026

Najszybszy sposób na naprawę większości błędów Windows Update w Windows 11 to zresetowanie składników usługi aktualizacji (wuauserv, bits, cryptsvc) razem z folderami SoftwareDistribution i Catroot2, a następnie uruchomienie DISM /Online /Cleanup-Image /RestoreHealth i sfc /scannow. W tym przewodniku helpdeskowym pokazuję kompletną procedurę diagnostyczną, od pierwszego kontaktu z użytkownikiem, przez odczyt kodów błędów (0x80070422, 0x800f0922, 0x80240034, 0x8024a105), aż po analizę WindowsUpdate.log i konfigurację Intune. Materiał jest dopasowany do zbiorczej aktualizacji Windows 11 24H2 z sierpnia 2026 roku.

  • Zdecydowana większość błędów Windows Update mieści się w pięciu kategoriach: usługi zatrzymane, uszkodzony store WU, brak miejsca na dysku, uszkodzenie obrazu komponentów oraz błędna polityka WSUS/Intune.
  • Pierwszym krokiem powinno być zawsze uruchomienie wbudowanego narzędzia Get Help albo polecenia usoclient StartScan. Pozwalają odróżnić awarię lokalną od problemu po stronie serwera aktualizacji.
  • Sekwencja net stop, czyszczenie SoftwareDistribution\Download, net start rozwiązuje około 60% zgłoszeń bez potrzeby ingerencji w rejestr.
  • Do analizy błędów służy Get-WindowsUpdateLog (od Windows 10 logi są w formacie ETL i wymagają konwersji) oraz Event Viewer w węźle WindowsUpdateClient.
  • W środowiskach firmowych najczęstszy pierwiastek błędu to nieprawidłowo skonfigurowany kanał WSUS albo konflikt między polityką GPO a profilem Intune Update Ring.
  • Dla Windows 11 24H2 nowym wymogiem jest 2 GB wolnego miejsca w partycji recovery oraz co najmniej 20 GB w partycji systemowej. Inaczej pojawia się 0x80070070.

Szybki triaż zgłoszenia w helpdesku

Szczerze mówiąc, w mojej codziennej pracy zgłoszenie typu „Windows Update nie działa" wygląda za każdym razem podobnie: użytkownik widzi pasek postępu, który się nie rusza, komunikat „W trakcie ponownej próby" albo tajemniczy kod. Zanim zaczniesz cokolwiek naprawiać, potrzebujesz trzech informacji: (1) numeru KB, którego dotyczy problem, (2) dokładnego kodu błędu w formacie 0x80xxxxxx, oraz (3) statusu urządzenia w Intune lub WSUS. Bez tych trzech elementów będziesz strzelał w ciemno.

Pierwsze, co robię zdalnie, to szybki skan przez wbudowane API klienta aktualizacji. Uruchom w PowerShell z uprawnieniami administratora:

# Wymuś rejestrację urządzenia i pobranie listy aktualizacji z serwera WSUS/Windows Update
UsoClient.exe StartInteractiveScan
Get-WindowsUpdateLog -LogPath $env:TEMP\WU.log
Get-WinEvent -LogName "Microsoft-Windows-WindowsUpdateClient/Operational" -MaxEvents 50 |
  Select-Object TimeCreated, Id, LevelDisplayName, Message |
  Format-Table -AutoSize -Wrap

Jeżeli UsoClient zwraca kontrolę natychmiast, ale w Event Viewer nie widzisz zdarzeń 41–43 (rozpoczęcie skanu), to znak, że problem jest po stronie usług, a nie po stronie sieci ani polityki. Wtedy przechodzisz od razu do sekcji reset składników. Jeżeli natomiast widzisz zdarzenia 41–43, a potem 20 z opisem „Instalacja nie powiodła się", błąd leży w store komponentów i wymaga DISM.

W środowiskach objętych pakietem Microsoft Intune warto od razu wywołać synchronizację profili: Ustawienia → Konta → Uzyskaj dostęp do miejsca pracy → Informacje → Synchronizuj. Wymusza to pobranie polityk aktualizacji przed dalszą diagnostyką. Inaczej możesz naprawiać coś, co za pół godziny znowu się „popsuje" ze względu na Update Ring.

Najczęstsze kody błędów Windows Update i ich znaczenie

Kod błędu Windows Update ma format 0x8XYYNNNN, gdzie środkowe dwa bajty (YY) zwykle mówią, w którym module coś się zepsuło. Poniżej lista, która pokrywa jakieś 90% zgłoszeń, jakie przechodzą przez moje ticketing:

  • 0x80070422: usługa Windows Update jest wyłączona. Częste na maszynach z ręcznie edytowanym services.msc albo z blokującym GPO. Rozwiązanie: Set-Service -Name wuauserv -StartupType Manual; Start-Service wuauserv.
  • 0x800f0922: nie udało się ukończyć etapu PostReboot. W 24H2 zazwyczaj oznacza brak miejsca w partycji recovery (WinRE). Sprawdź reagentc /info.
  • 0x80240034: pobieranie aktualizacji nie powiodło się, zwykle z powodu uszkodzonego SoftwareDistribution\Download albo błędnego proxy. Sprawdź netsh winhttp show proxy.
  • 0x80244022: serwer WSUS zwrócił HTTP 503. To znaczy, że pool aplikacji WsusPool padł. Diagnostyka po stronie serwera, nie klienta.
  • 0x8024a105: połączenie z Windows Update przerwane. Najczęściej firewall, TLS 1.2 wyłączony w rejestrze albo blokada na Zscaler/Netskope. Sprawdź, czy *.update.microsoft.com jest odblokowane.
  • 0x80070070: brak miejsca na dysku. Windows 11 24H2 wymaga 20 GB wolnego miejsca w partycji systemowej.
  • 0x800705b4: timeout usługi. Zwykle wskazuje na duży pending reboot lock albo antywirus skanujący cache aktualizacji.
  • 0xc1900101: kod z rodziny sterowników. Najczęstszy podczas upgrade'ów feature update; sprawdź logi setuperr.log w C:\$WINDOWS.~BT\Sources\Panther.

Dokumentację wszystkich kodów utrzymuje Microsoft. Polecam trzymać zakładkę do oficjalnej listy kodów błędów Windows Update. Kiedy trafisz na coś spoza mojej listy powyżej, tam znajdziesz opis modułu i wskazówkę do dalszej diagnostyki.

Jak zresetować składniki Windows Update krok po kroku

To jest procedura, którą uruchamiam automatycznie z SCCM/Intune Proactive Remediation, kiedy widzę w telemetrii co najmniej trzy nieudane skany z rzędu. Skrypt zatrzymuje usługi, kasuje cache pobieranych aktualizacji, ponownie rejestruje biblioteki BITS/WU, resetuje uprawnienia i uruchamia usługi z powrotem. Testowałam go na Windows 11 22H2, 23H2 i 24H2 (na tym ostatnim złapałam kilka niespodziewanych regresji, ale w końcu ustabilizowało się).

# reset-windows-update.ps1
# Wymaga uruchomienia jako Administrator.

$ErrorActionPreference = 'Continue'
$services = 'wuauserv','cryptSvc','bits','msiserver','usosvc'

Write-Host "[1/5] Zatrzymuję usługi aktualizacji..."
foreach ($s in $services) { Stop-Service -Name $s -Force -ErrorAction SilentlyContinue }

Write-Host "[2/5] Kasuję cache pobierania i katalog krypto..."
Remove-Item "$env:SystemRoot\SoftwareDistribution\Download\*" -Recurse -Force -ErrorAction SilentlyContinue
Rename-Item "$env:SystemRoot\SoftwareDistribution" "SoftwareDistribution.old" -Force -ErrorAction SilentlyContinue
Rename-Item "$env:SystemRoot\System32\catroot2"       "catroot2.old"           -Force -ErrorAction SilentlyContinue

Write-Host "[3/5] Rejestruję biblioteki BITS i Windows Update..."
$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','wuapi.dll',
  'wuaueng.dll','wups.dll','wups2.dll','wuwebv.dll','wucltux.dll','muweb.dll','wuwebv.dll'
)
foreach ($d in $dlls) { & regsvr32.exe /s $d }

Write-Host "[4/5] Resetuję sieć i klienta BITS..."
netsh winsock reset          | Out-Null
netsh int ip reset           | Out-Null
bitsadmin /reset /allusers   | Out-Null

Write-Host "[5/5] Uruchamiam usługi ponownie..."
foreach ($s in $services) { Start-Service -Name $s -ErrorAction SilentlyContinue }

Write-Host "Gotowe. Wymuszam nowy skan..."
UsoClient.exe StartInteractiveScan

Po uruchomieniu skryptu odczekaj 3–5 minut i sprawdź w Ustawienia → Windows Update, czy pojawia się nowa lista aktualizacji. W około 60% przypadków, w których wcześniej widzieliśmy błąd, po tej procedurze pobieranie startuje bez dalszej ingerencji. Jeżeli błąd wraca (a szczególnie jeżeli jest to 0x800f081f lub 0x80073712), problem leży w store komponentów, o czym w następnej sekcji.

Kiedy używać DISM i SFC do naprawy obrazu Windows

Reset składników nie pomoże, jeżeli sam obraz komponentów jest uszkodzony, a to zdarza się częściej, niż myślisz, szczególnie po nagłym wyłączeniu zasilania w trakcie Cumulative Update. Do naprawy służy sekwencja DISM plus sfc /scannow. Kolejność ma znaczenie: DISM naprawia „magazyn" komponentów, z którego SFC potem czerpie zdrowe pliki systemowe.

# 1) Sprawdź, czy magazyn komponentów w ogóle jest do naprawy
DISM /Online /Cleanup-Image /CheckHealth
# 2) Głębszy skan (bez naprawy), trwa 5-15 minut
DISM /Online /Cleanup-Image /ScanHealth
# 3) Naprawa z użyciem Windows Update jako źródła zdrowych plików
DISM /Online /Cleanup-Image /RestoreHealth
# 4) Naprawa plików systemowych na bazie odzyskanego magazynu
sfc /scannow

Jeśli maszyna nie ma dostępu do Windows Update (np. sieć zamknięta), użyj obrazu WIM z instalatora Windows 11 24H2 jako źródła:

# Zamontuj ISO 24H2 pod literę D:, potem:
DISM /Online /Cleanup-Image /RestoreHealth /Source:WIM:D:\sources\install.wim:1 /LimitAccess

Parametr /LimitAccess jest kluczowy. Mówi DISM, żeby NIE próbował dobierać brakujących plików z Windows Update, tylko trzymał się źródła lokalnego. Bez niego DISM w środowisku bez internetu utknie na 10% postępu i po godzinie zwróci błąd 0x800f0906. Wiem to z bolesnego doświadczenia z pierwszego rolloutu 24H2 w zeszłym roku (nie polecam nikomu).

Jeżeli i to nie pomoże, pozostaje in-place upgrade tą samą wersją Windows. Zachowuje aplikacje i profil, ale odbudowuje cały OS. To ostatnia deska ratunku przed pełną reinstalacją. Więcej praktycznych scenariuszy diagnostycznych opisuję w naszym przewodniku po diagnostyce Windows 11 w firmie.

Analiza WindowsUpdate.log i Event Viewer

Od Windows 10 (i tak samo w Windows 11) tradycyjny C:\Windows\WindowsUpdate.log jest pusty. To tylko wskazówka, że logi zapisywane są w formacie ETL (Event Tracing for Windows) w katalogu C:\Windows\Logs\WindowsUpdate. Żeby je odczytać, musisz je najpierw skonwertować:

# Wygeneruj czytelny WindowsUpdate.log na pulpicie
Get-WindowsUpdateLog -LogPath "$env:USERPROFILE\Desktop\WindowsUpdate.log"

Konwersja zajmuje 30–90 sekund. Wynikowy plik ma format kolumnowy: data, wątek, komponent, komunikat. Najciekawsze linie zaczynają się od Agent *FAILED*, Handler:: FATAL albo zawierają HRESULT-y w formacie 0x8XXXXXXX. Otwieraj log w Visual Studio Code z rozszerzeniem Log File Highlighter. Regularne kolorowanie odciąża oczy przy 500 MB logach (uwierz mi na słowo).

Alternatywnie, kiedy zależy mi na czasie, filtruję Event Viewer po stronie klienta:

# Wyciągnij tylko błędy WU z ostatnich 3 dni
$cutoff = (Get-Date).AddDays(-3)
Get-WinEvent -FilterHashtable @{
  LogName   = 'Microsoft-Windows-WindowsUpdateClient/Operational'
  Level     = 2   # Error
  StartTime = $cutoff
} | Select-Object TimeCreated, Id, Message | Format-List

Zdarzenia, na które zwracam uwagę: Event 20 (Instalacja aktualizacji nie powiodła się), Event 25 (Instalacja przerwana), Event 31 (Detekcja aktualizacji nie powiodła się) i Event 34 (Nie udało się zapisać stanu). Każde z nich niesie w polu Message konkretny HRESULT, który dopasowujesz do tabeli kodów. Szczegółowe znaczenie ID zdarzeń znajdziesz w dokumentacji Windows Update log files.

Problemy WSUS, Intune Update Rings i Group Policy

W środowisku firmowym najbardziej niedoceniany pierwiastek błędów Windows Update to konflikt polityk. Klasyczny przykład: administrator ustawił GPO Configure Automatic Updates na 4 (auto download and install), a jednocześnie dołączył urządzenie do Intune, który przez Update Ring próbuje nałożyć własne DeliveryOptimization. Efekt? WU wypluwa 0x8024801c (konflikt konfiguracji) i staje.

Diagnostyka zaczyna się od sprawdzenia, kto właściwie zarządza aktualizacjami na kliencie:

# Klucze rejestru używane przez WU:
Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate' -ErrorAction SilentlyContinue
Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU' -ErrorAction SilentlyContinue
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\PolicyManager\current\device\Update' -ErrorAction SilentlyContinue

# Sprawdź, do jakiego kanału WU dzwoni maszyna:
(New-Object -ComObject Microsoft.Update.ServiceManager).Services |
  Where-Object { $_.IsDefaultAUService -eq $true } |
  Select-Object Name, ServiceID

Klucz Policies\Microsoft\Windows\WindowsUpdate pochodzi z GPO, a PolicyManager\current\device\Update z MDM/Intune. Jeżeli obydwa mają wpisy, to gwarantowany konflikt. Reguła jest prosta: albo GPO, albo Intune. W środowiskach hybrydowych Microsoft rekomenduje wyłączenie polityk WU w GPO i migrację całości na Update Rings, co opisałam szczegółowo w przewodniku po diagnostyce Group Policy w Windows 11.

Po stronie WSUS najczęstsze błędy dotyczą certyfikatu TLS (klient nie ufa self-signed cert) albo padniętego pool IIS. Szybka reanimacja serwera WSUS:

# Uruchom na serwerze WSUS
Import-Module WebAdministration
Restart-WebAppPool -Name "WsusPool"
# Sprawdź czy pool nie ma za niskiego limitu pamięci
Get-ItemProperty "IIS:\AppPools\WsusPool" | Select-Object name, @{n='PrivateMemLimitKB';e={$_.recycling.periodicRestart.privateMemory}}
# Zalecane: co najmniej 4 GB (4194304 KB) lub 0 (bez limitu)

Błąd 0x80070070 i wymogi miejsca w Windows 11 24H2

Wraz z 24H2 Microsoft podniósł wymogi miejsca. Instalacja miesięcznego CU wymaga 8–12 GB w partycji systemowej, a partycja WinRE (recovery) musi mieć co najmniej 990 MB wolnego miejsca. Na starszych laptopach (kupionych w erze Windows 10) partycja recovery ma często 500 MB. Instalacja odmawia startu z błędem 0x80070070 albo 0x800f0922.

Zdiagnozować to można w trzech krokach:

# Sprawdź stan partycji recovery
reagentc /info
# Wynik powinien zawierać: "Windows RE status: Enabled"
# Oraz "Windows RE location: \\?\GLOBALROOT\device\harddisk0\partition4\Recovery\WindowsRE"

# Sprawdź rozmiar tej partycji
diskpart
DISKPART> list disk
DISKPART> select disk 0
DISKPART> list partition
# Poszukaj partycji typu "Recovery", sprawdź jej rozmiar
DISKPART> exit

Jeżeli partycja jest za mała, Microsoft dostarcza gotowy skrypt naprawczy (KB5028997), który powiększa ją kosztem partycji systemowej. Wymaga on 250 MB wolnego miejsca w C: i można go pobrać z strony rozwiązywania problemów Windows Update. W środowiskach zarządzanych warto uruchamiać go proaktywnie przez Intune Proactive Remediation na wszystkich maszynach kupionych przed 2022 rokiem.

Tabela porównawcza narzędzi diagnostycznych

Wybór narzędzia zależy od tego, czy jesteś przy maszynie, czy diagnozujesz zdalnie, i czy masz dostęp administracyjny. Poniżej moje wewnętrzne zestawienie helpdeskowe:

Narzędzie Zdalne? Wymaga admin? Najlepsze do Ograniczenia
Windows Update Troubleshooter (Get Help) Nie Nie Pierwsza linia, użytkownik uruchamia sam Nie diagnozuje WSUS ani polityk
Get-WindowsUpdateLog Tak (przez PSRemoting) Tak Głęboka analiza po wpadce instalacji Konwersja ETL zajmuje czas
Event Viewer / Get-WinEvent Tak Tak Szybki podgląd błędów z ostatnich dni Mniej szczegółów niż WU.log
UsoClient.exe Tak Tak Wymuszenie skanu i pobrania Nieudokumentowane oficjalnie
Intune → Windows Update Report Tak Rola Intune Statystyki floty i trend błędów Opóźnienie 24 h w raportach
SetupDiag.exe Tak Tak Feature updates (0xc1900101 itp.) Tylko po nieudanym upgrade

W praktyce codzienny cykl u mnie wygląda tak: Intune Report pokazuje mi listę maszyn z błędem, Get-WinEvent zdalnie potwierdza HRESULT, a jeśli nie widać jasnej przyczyny, konwertuję WindowsUpdate.log i wgryzam się w wątek konkretnej instalacji.

Najczęściej zadawane pytania

Jak naprawić błąd Windows Update 0x80070422?

Ten kod oznacza wyłączoną usługę Windows Update (wuauserv). Uruchom PowerShell jako administrator i wykonaj: Set-Service -Name wuauserv -StartupType Manual, a następnie Start-Service wuauserv. Jeżeli usługa ponownie zatrzymuje się po chwili, sprawdź GPO Configure Automatic Updates. Najprawdopodobniej polityka wymusza stan „Disabled".

Jak wyczyścić folder SoftwareDistribution w Windows 11?

Zatrzymaj usługi wuauserv, bits i cryptsvc, zmień nazwę C:\Windows\SoftwareDistribution na SoftwareDistribution.old, po czym uruchom usługi z powrotem. Windows automatycznie odtworzy pusty folder. Nie usuwaj oryginału od razu (daj mu tydzień, na wypadek gdyby zawierał odroczone aktualizacje sterowników).

Dlaczego Windows Update się nie instaluje po restarcie?

Najczęstsza przyczyna to brak miejsca w partycji WinRE (błąd 0x800f0922) albo uszkodzony store komponentów. Uruchom reagentc /info, żeby sprawdzić stan partycji recovery, oraz DISM /Online /Cleanup-Image /RestoreHealth dla naprawy magazynu. Jeżeli oba testy przejdą pomyślnie, problemem jest sterownik blokujący etap PostReboot.

Jak sprawdzić dziennik Windows Update w Windows 11?

Uruchom w PowerShell polecenie Get-WindowsUpdateLog -LogPath "$env:USERPROFILE\Desktop\WindowsUpdate.log". Konwersja z formatu ETL zajmuje 30–90 sekund. Otwórz wynikowy plik w Visual Studio Code i szukaj linii zawierających FAILED, FATAL albo HRESULT-y w formacie 0x8XXXXXXX.

Czy DISM RestoreHealth może uszkodzić system?

Nie. Polecenie tylko odtwarza brakujące albo uszkodzone pliki z magazynu komponentów. W bardzo rzadkich przypadkach, gdy DISM próbuje pobrać zły pakiet z Windows Update na maszynie zarządzanej przez WSUS, może wystąpić błąd 0x800f0906. Rozwiązanie: uruchom DISM z parametrem /Source wskazującym na obraz install.wim i dodaj /LimitAccess.

Co robi UsoClient.exe StartInteractiveScan?

UsoClient to niedokumentowany, ale w pełni obsługiwany klient Update Session Orchestrator. Polecenie StartInteractiveScan wymusza natychmiastowe zapytanie do serwera Windows Update albo WSUS o listę dostępnych aktualizacji, ignorując zaplanowaną godzinę skanu. Używam go przy każdym zgłoszeniu jako pierwszą akcję diagnostyczną.

Chen Wei
O Autorze Chen Wei

Systems administrator who bridges the gap between users and the actual servers. Likes documentation almost as much as she likes coffee.