10

A customer running Windows 7 Home must have reserved or okayed the Windows 10 upgrade because I am seeing daily messages that the upgrade is failing to install.

This customer is not ready for Windows 10 so it's good that the install is failing. But how to make it stop trying? Once permission is granted for the upgrade, how do I revoke that permission so it stops attempting to upgrade?

I ran the Windows Update troubleshooter to clear out updates, and I uninstalled and hid KB3035583, but it is still trying to upgrade. In Task Manager, there is no GWX.EXE process.

Event log failure message:

Log Name:      System
Source:        Microsoft-Windows-WindowsUpdateClient
Date:          8/5/2015 1:28:58 AM
Event ID:      20
Task Category: Windows Update Agent
Level:         Error
Keywords:      Failure,Installation
User:          SYSTEM
Description:   Installation Failure: Windows failed to install the following update with 
               error 0x80240020: Upgrade to Windows 10 Home.

Relevant lines from WindowsUpdate.log:

2015-08-05  01:28:57:885    1068    6698    Agent   *************
2015-08-05  01:28:57:885    1068    6698    Agent   ** START **  Agent: Installing updates [CallerId = AutomaticUpdates]
2015-08-05  01:28:57:885    1068    6698    Agent   *********
2015-08-05  01:28:57:885    1068    6698    Agent     * Updates to install = 1
2015-08-05  01:28:57:885    1068    6698    Agent     *   Title = Upgrade to Windows 10 Home
2015-08-05  01:28:57:885    1068    6698    Agent     *   UpdateId = {27E79986-1150-4342-BDD2-76DF82C768D5}.201
2015-08-05  01:28:57:885    1068    6698    Agent     *     Bundles 1 updates:
2015-08-05  01:28:57:885    1068    6698    Agent     *       {FCD6621E-F5D4-4A95-AD43-28F0C58DD2F3}.201
2015-08-05  01:28:58:181    1068    6698    DnldMgr Preparing update for install, updateId = {FCD6621E-F5D4-4A95-AD43-28F0C58DD2F3}.201.
2015-08-05  01:28:58:181    27280   6f84    Misc    ===========  Logging initialized (build: 7.6.7601.18917, tz: -0700)  ===========
2015-08-05  01:28:58:181    27280   6f84    Misc      = Process: C:\Windows\system32\wuauclt.exe
2015-08-05  01:28:58:181    27280   6f84    Misc      = Module: C:\Windows\system32\wuaueng.dll
2015-08-05  01:28:58:181    27280   6f84    Handler :::::::::::::
2015-08-05  01:28:58:181    27280   6f84    Handler :: START ::  Handler: Windows Setup Install
2015-08-05  01:28:58:181    27280   6f84    Handler :::::::::
2015-08-05  01:28:58:181    27280   6f84    Handler   : Updates to install = 1
2015-08-05  01:28:58:181    1068    5ecc    AU  >>##  RESUMED  ## AU: Installing update [UpdateId = {27E79986-1150-4342-BDD2-76DF82C768D5}]
2015-08-05  01:28:58:181    1068    5ecc    AU    # WARNING: Install failed, error = 0x80240020 / 0x00000000
2015-08-05  01:28:58:181    27280   6f84    Handler   : WARNING: Exit code = 0x80240020
2015-08-05  01:28:58:181    1068    5ecc    AU  Write OSUpgradeState =14 with OSUpgradephase =2
2015-08-05  01:28:58:181    27280   6f84    Handler :::::::::
2015-08-05  01:28:58:181    27280   6f84    Handler ::  END  ::  Handler: Windows Setup Install
2015-08-05  01:28:58:181    27280   6f84    Handler :::::::::::::
  • 1
    Have you removed the hidden directories $Windows.~BT and $Windows.~WS? – Ramhound Aug 5 '15 at 17:49
  • Related the basic idea of that answer is still correct. You need to install the "Get Windows 10" application, remove the reservation for Windows 10, then uninstall the application. – Ramhound Aug 5 '15 at 17:52
  • Thanks @Ramhound. I've removed the $Windows.~BT folder. There is no $Windows.~WS folder. I found a registry key that I hope will accomplish the same thing as removing the Windows 10 reservation--see my answer below. – Mark Berry Aug 5 '15 at 18:31
14

Further Googling led me to a registry key that looks like it controls the upgrade process.

The machine that was trying to upgrade had these values:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\OSUpgrade]
"KickoffDownload"=dword:00000001
"KickoffSource"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\OSUpgrade\State]
"OSUpgradeState"=dword:0000000e
"OSUpgradeStateTimeStamp"="2015-08-04 15:59:55"
"OSUpgradePhase"=dword:00000002

Another Windows 7 machine, where I had removed KB3035583 before Windows 10 was released (and thus successfully blocked the upgrade), had these values:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\OSUpgrade]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\OSUpgrade\State]
"OSUpgradeState"=dword:00000001
"OSUpgradeStateTimeStamp"="2015-07-28 10:09:55"

I updated the registry on the "upgrading" machine to match the registry of the "blocked" machine, then rebooted the machine.

Also, thanks to the comment from @Ramhound, I found a $Windows.~BT hidden folder with 5.1GB of content. I ran Disk Cleanup and removed "Temporary Windows installation files." That folder is now gone.

We'll see if this successfully blocks the upgrade going forward.

Update 7 August 2015

The machine has stopped trying to upgrade to Windows 10, so the registry change must have worked. The values that I set two days ago have not changed.

1

This is now easy with Never 10, a portable utility to prevent Windows 10 upgrades.

Not the answer you're looking for? Browse other questions tagged or ask your own question.