Windows Update stuck on Checking for updates

I set up new computers with Windows 10, and part of that is performing Windows Update.

I have noticed that many times I will start the update process, and it will just get stuck on "Checking for updates".

Sometimes restarting the computer fixes the problem, sometimes not. Is this a known problem, and if so is a solution available?


Solution 1:

I've experienced the problem where Windows 10 machines seem to be stuck on checking for updates, etc. when using the Settings | Updates & Security and selecting Check for updates.

To resolve I open cmd and type in usoclient startinteractivescan and that seems to make it rescan and start downloading and/or installing, and move forward from being stuck.

I've read various posts about usoclient and it being part of the Update Orchestrator Service process and having various system Task Scheduler tasks scheduled. I've not been able to find a lot about usoclient and it's command line options from Microsoft though unfortunately.

I'm guessing the issue is related to checking for updates during the Active Hours period and the GUI option "Check for updates" not allowing it to move forward with whatever it's stuck doing.

In some environments there could also be group policy settings that configure Windows 10 update configurations which contribute to the process potentially.

enter image description here

Additionally, a few years back I wrote about things you can try to resolve this for other Windows Operating systems on Downloading Windows Updates takes forever which is rather comprehensive and some of it may still apply to Windows 10.

Supporting Resources

  • Command Line Equivalent of wuauclt in Windows 10 / Windows Server 2016

    Now, in order to force check Windows Update, follow the below instructions -

    1. Open a Command Prompt with Administrator privileges.
    2. Type in usoclient StartScan
    3. You will see that Windows Update in Settings.exe will start refreshing

    Note: USOClient.exe is located in C:\Windows\System32

    This will also force the client to report its status to the WSUS server (if configured).

    On using Sysinternal's Strings on UsoClient.exe, I found that there are more switches which can be used

    • StartScan: Used To Start Scan
    • StartDownload: Used to Start Download of Patches
    • StartInstall: Used to Install Downloaded Patches
    • RefreshSettings: Refresh Settings if any changes were made
    • StartInteractiveScan: May ask for user input and/or open dialogues to show progress or report errors
    • RestartDevice: Restart device to finish installation of updates
    • ScanInstallWait: Combined Scan Download Install
    • ResumeUpdate: Resume Update Installation On Boot

    Note: Attempting to run the Interactive mode if WU is configured to be solely non-Interactive, or on a non-Interactive server, should trigger an error (something along the lines of "AU Can not perform non-interactive scan if AU is interactive-only").

  • Manage device restarts after updates

Solution 2:

Windows Update is problematic and was always slow. For more information about why, see the article Why is checking Windows Update so slow?

Below is a compendium of all the advice I found for making Windows Update work better:

  • For a new computer, Windows Update may be slow and need more patience (meaning wait for as much as a couple of hours).

  • The network driver may not be the most suited, so slowing down Windows Update. Windows Update itself may bring in a better driver, but it has to finish first. The solution might be to install the driver manually before doing Windows Update.

  • Installed software might cause problems, so it's advised to run Windows Update repeatedly on a new computer for as many runs as required before installing third-party software.

  • Run the Windows Update troubleshooter in:
    Settings > Update & Security > Troubleshoot > Additional troubleshooters > Windows Update > Run the troubleshooter

  • Run Microsoft's Windows Update Troubleshooter for Windows 10

  • Reset Windows Update components by running these commands in an elevated Command Prompt:

    net stop wuauserv
    net stop cryptSvc
    net stop bits
    net stop msiserver
    Ren C:\Windows\SoftwareDistribution SoftwareDistribution.old
    Ren C:\Windows\System32\catroot2 Catroot2.old
    net start msiserver
    net start wuauserv
    net start cryptSvc
    net start bits
    

    If all goes well, delete the .old folders (or return them if a problem arrives).

  • Run the DISM tool in an elevated Command Prompt:

    Dism /Online /Cleanup-Image /ScanHealth
    Dism /Online /Cleanup-Image /CheckHealth
    Dism /Online /Cleanup-Image /RestoreHealth
    
  • Run the following in an elevated PowerShell shell:

    SC config trustedinstaller start=auto
    
  • If nothing fixes the problem, use a heavy gun:
    Repair Install of Windows 10 with an In-place Upgrade

Once the last run of Windows Update has finished, reboot Windows (if not already done).

Solution 3:

As an alternative approach, it looks like updates can be done via PowerShell, instead of using Windows Settings. Here is example for checking for updates:

$o_update = New-Object -ComObject Microsoft.Update.Searcher
$o_search = $o_update.Search("IsInstalled=0 and Type='Software' and IsHidden=0")

For ($n = 0; $n -LT $o_search.Updates.Count; $n++) {
   Write-Host $o_search.Updates.Item($n).Title
}

Example output:

2020-09 Cumulative Update Preview for .NET Framework 3.5 and 4.8 for Windows 10 Version 1909 for x64 (KB4576947)
2020-09 Update for Windows 10 Version 1909 for x64-based Systems (KB4023057)
Security Intelligence Update for Microsoft Defender Antivirus - KB2267602 (Version 1.325.104.0)
Update for Microsoft Defender Antivirus antimalware platform - KB4052623 (Version 4.18.2009.7)

Links:

  • https://devblogs.microsoft.com/scripting/hey-scripting-guy-how-can-i-search-for-download-and-install-an-update
  • https://gallery.technet.microsoft.com/scriptcenter/Execute-Windows-Update-fc6acb16