Tell Windows 7 to Stop Trying to Upgrade to Windows 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:      SystemSource:        Microsoft-Windows-WindowsUpdateClientDate:          8/5/2015 1:28:58 AMEvent ID:      20Task Category: Windows Update AgentLevel:         ErrorKeywords:      Failure,InstallationUser:          SYSTEMDescription:   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 = 12015-08-05  01:28:57:885    1068    6698    Agent     *   Title = Upgrade to Windows 10 Home2015-08-05  01:28:57:885    1068    6698    Agent     *   UpdateId = {27E79986-1150-4342-BDD2-76DF82C768D5}.2012015-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}.2012015-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:Windowssystem32wuauclt.exe2015-08-05  01:28:58:181    27280   6f84    Misc      = Module: C:Windowssystem32wuaueng.dll2015-08-05  01:28:58:181    27280   6f84    Handler :::::::::::::2015-08-05  01:28:58:181    27280   6f84    Handler :: START ::  Handler: Windows Setup Install2015-08-05  01:28:58:181    27280   6f84    Handler :::::::::2015-08-05  01:28:58:181    27280   6f84    Handler   : Updates to install = 12015-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 / 0x000000002015-08-05  01:28:58:181    27280   6f84    Handler   : WARNING: Exit code = 0x802400202015-08-05  01:28:58:181    1068    5ecc    AU  Write OSUpgradeState =14 with OSUpgradephase =22015-08-05  01:28:58:181    27280   6f84    Handler :::::::::2015-08-05  01:28:58:181    27280   6f84    Handler ::  END  ::  Handler: Windows Setup Install2015-08-05  01:28:58:181    27280   6f84    Handler :::::::::::::

Solution:

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_MACHINESOFTWAREMicrosoftWindowsCurrentVersionWindowsUpdateOSUpgrade]"KickoffDownload"=dword:00000001"KickoffSource"=dword:00000000[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionWindowsUpdateOSUpgradeState]"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_MACHINESOFTWAREMicrosoftWindowsCurrentVersionWindowsUpdateOSUpgrade][HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionWindowsUpdateOSUpgradeState]"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.