I have a Windows 10 Pro (v.1511 - x64) PC, whereby in the "Update & Security" window it shows that updates are available, for example "Definition update for Windows Defender", "Security update for ASP.NET..." and so on, but it does not download the update at any point in time. The power options have been changed to make the PC stay awake 24/24.

Any fix for this issue?


1 Year
Discussion Span
Last Post by rproffitt

Let me share I don't fret about this unless it goes on for about a month. Also, any competing security app could interfere with Defender so for now my advice is not fret and wait it out.


You may have done this but often I find a reboot or two resolves this type of issue for me. Open up Settings > Windows Update and click Check for updates, wait for it to finish, then reboot. Do this twice and it is likely to clear up, otherwise it may just be something that takes longer to download. If it does go on for longer then you may have a more serious issue indeed.


It is possible that your connection somehow got switched to "metered". If set to metered, downloads are deferred, although for how long I am not sure. I've attached a script (vbs) that you can execute to get a connection's metered/non-metered status and set it to one state or the other.

At home I have a 160 gig/month connection but at the cottage I have a cap of 3 gig/month so I set the cottage connection to metered to defer the download of updates.

'   Name:
'       metered.vbs
'   Description:
'       Command line utility to set an internet connection to metered
'       or non-metered
'   Usage:
'       metered
'           Show existing profiles
'       metered <profile>
'           Show metered/non-metered status of <profile>
'       metered <profile> ON | OFF
'           Set metered status of <profile> to on or off
'   Notes:
'       The default engine for running scripts is wscript.exe. Before
'       running this script you should set the default engine to cscript.exe
'       (command line - wscript is windowed). Open a command shell as
'       Administrator and enter:
'           cscript //nologo //h:cscript //s
'       You will only have to do this once.
'   Audit:
'       2017-02-28  rj  tweaked output format slightly
'       2016-11-10  rj  original code

set wso = CreateObject("Wscript.Shell")
set arg = Wscript.Arguments

Select Case arg.Count

    Case 0  'no args - show all profile names

        profiles = Filter(ExecCmd("netsh wlan show profiles"),":")
        Wscript.Echo Join(profiles,vbcrlf)

    Case 1  'one arg - display current metered status for given profile

        profile = ExecCmd("netsh wlan show profile name=""" & arg(0) & """")
        status  = Filter(profile,"Cost                   :")

        Select Case True

            Case not CheckProfileExists(arg(0),profile)

            Case instr(status(0),"Fixed") > 0
                Wscript.Echo arg(0),"is currently set to metered"

            Case instr(status(0),"Unrestricted") > 0
                Wscript.Echo arg(0),"is currently set to non-metered"

        End Select

    Case 2  'two args - set metered connection on or off for given profile

        command = "netsh wlan set profileparameter name=""" & arg(0) & """ "

        Select Case Ucase(arg(1))

            Case "ON"
                result = ExecCmd(command & "cost=Fixed")
                CheckProfileExists arg(0),result

            Case "OFF"
                result = ExecCmd(command & "cost=Unrestricted")
                CheckProfileExists arg(0),result

            Case Else
                Wscript.Echo "state must be either ON or OFF"

        End Select

End Select

'Execute the given (DOS) command and return the output in a text array

Function ExecCmd ( cmd )

    'Execute the command

    dim exec: set exec = wso.Exec(cmd)
    dim res : res = ""

    'Read all result text from standard output

        res = res & vbLf & exec.StdOut.ReadLine
    loop until exec.StdOut.AtEndOfStream

    'Return as a text array

    ExecCmd = Split(Mid(res,2),vbLf)

End Function

'Return True if the output text in <text> was such that the given
'profile was valid, False otherwise (print error message if not valid)

Function CheckProfileExists (profile,text)

    If Ubound(Filter(text,"is not found on the system")) = -1 Then
        CheckProfileExists = True
        CheckProfileExists = False
        Wscript.Echo "Profile",profile,"not found."
    End If

End Function

Edited by Reverend Jim


I've tried all of the proposed solutions, but still it keeps showing the updates, without downloading anything thou. Any other solution which might help out (except from a format re-install)?



There is the old method worth knowing about. Find the KBnnnnnnn (the n's are the number of the KB) then google that KB number. Many of these have manual downloads and installers.

Worth noting are those cracked and crack activated Windows. These are known to fail WU (Windows Update.) Be sure you know your OS condition. That is, no cracks, not infected.


Thanks for this tip rproffitt, managed to get it to update from this by downloading from the Microsoft Update Catalog

Votes + Comments
Thanks for trying that. Comment about it below.

Thanks for the update. Be aware that most of these are not urgent and important. Some will fail and the telemetry back to Microsoft shows it failing which if high enough tells Microsoft there is a problem.

Forcing the install can in extreme cases cause systems to stop working. This is why I suggest being sure of the Windows OS's state (no trojans, etc.), enough free disk space and so on. Patience is best and check on it in a few weeks.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.