Monday, January 11, 2016

Understanding Windows 10 Upgrade System Settings

Microsoft has gone to great lengths to get users of Windows 7 or Windows 8.1 to upgrade to Windows 10- by hook or by crook. While Microsoft has published very little technical information about their systems for encouraging and pushing Windows 10 upgrades to users of earlier operating systems, some of the published information that does exist is actually wrong or incomplete...


I put together a video that explains some of the well-known Windows settings related to Windows 10 upgrades. It also demonstrates how some of the background tasks that Microsoft installs along with its Windows 10 program files actively reset system settings that you might have changed.

You can view the video here, and the full transcript appears below.


TRANSCRIPT

The Windows Update patch named KB3035583 is most well known for installing the "Get Windows 10" icon app on Windows 7 and Windows 8 computers. The first version of KB3035583 began appearing on peoples' computers in early-to-mid 2015, but Microsoft has released several subsequent versions since that time, under the same name. If your computer is configured to install Windows updates automatically and you already have a version of KB3035583 installed, Windows Update installs the new versions of the patch on your PC as they become available, replacing the pre-existing version.

The 'Get Windows 10' icon app.

Aside from the Get Windows 10 icon app, KB3035583 includes a number of other programs that play different roles in Microsoft's aggressive campaign for the widespread adoption of Windows 10. Like the Get Windows 10 app, these programs are scheduled to run at certain times, or in response to certain events, as defined in the Windows Task Scheduler.

Almost as soon as Microsoft began pushing the Get Windows 10 app to the public, users of Windows 7 and Windows 8 who weren't interested in upgrading to Windows 10 began looking for ways to get rid of the icon and prevent unwanted operating system upgrades. There are some well-known registry values associated with the Get Windows 10 app and various other aspects of Microsoft's Windows 10 upgrade apparatus.

One of these registry values, DisableGWX, hides the Get Windows 10 icon from your notification area. If you have the KB3035583 patch installed and Windows launches a scheduled instance of the Get Windows 10 app, the app immediately checks for this registry value and silently exits without displaying the icon if the value exists and has a value of 1. Having this registry value in place does not prevent the KB3035583 patch from being installed, and doesn't prevent the other background tasks associated with the patch from running. It only prevents the Get Windows 10 icon and related notifications from appearing in your notification area.

Another registry value, AllowOSUpgrade, plays a part in certain aspects of the Windows 10 Upgrade process, although its full purpose is not publicly documented. If the value exists and is set to zero, it appears to prevent Windows 10 Upgrades that are initiated via Windows Update from succeeding. You might think this would protect you from an unwanted Windows 10 upgrade, but it's not quite that simple. You see, on many computers, some of the scheduled background tasks associated with the KB3035583 patch re-enable the AllowOSUpgrade value by setting it to 1.

One of these tasks, refreshgwxconfig-B is scheduled to run twice a day. If yours is one of the affected computers and you manually disable the AllowOSUpgrade value by setting it to 0, the scheduled task will re-enable it the next time it runs.

Note: If you watch the video that accompanies this post, you can see the refreshgwxconfig-B task reset the AllowOSUpgrade setting in real time.

Another Windows 10 registry value that scheduled background tasks routinely reset is ReservationsAllowed. Interestingly, unlike AllowOSUpgrade, which gets enabled every time the tasks run, ReservationsAllowed gets disabled (set to zero) instead. Again, there is very little official information on the purpose of this registry value, and the only Microsoft knowledge base article that mentions it (KB3080351) has been proven to be incorrect. [Update: On January 13 they finally corrected this knowledge base document; it no longer mentions ReservationsAllowed at all.] My own theory as to why the background tasks are disabling the ReservationsAllowed setting is that Microsoft has transitioned away from the reservation system they originally used at Windows 10's launch, and have instead introduced several methods of performing immediate upgrades. You don't need to reserve an upgrade anymore; you simply upgrade.

It might occur to you that simply uninstalling the KB3035583 patch would solve the problem of Windows changing your system settings behind your back. Unfortunately, if you already had previous versions of the patch installed that were subsequently upgraded by newer versions, attempting to remove the patch now just rolls you back to an earlier version. It won't fully remove the patch anymore. (You can see this demonstrated in the video.) And these files are hard to remove manually, since they are protected by additional layers of Windows security that require more than simple administrator access.

GWX Control Panel is a free tool that checks for many of the files and system settings associated with Windows 10 upgrades. It can disable or enable the Get Windows 10 app and  disable or enable the ability to perform Windows 10 Upgrades just like you can do in the Windows registry. It also has a special Monitor Mode that alerts you if it detects new files or settings that may leave you vulnerable to Windows 10. (For example, it notifies you if Windows re-enables the AllowOSUpgrade registry value.) It can also delete hard-to-remove files like the secret Windows 10 Download folders and the KB3035583 program files and scheduled tasks.

GWX Control Panel 1.7.


If you prefer to take care of all these things manually, the information is out there. You just have to know what to look for. GWX Control Panel is just a quick, easy, and free way to reclaim control over your current operating system.

ADDENDUM

My video covered some specific system settings that had been getting discussed (and debated) in the news recently, but here's some additional information not covered in the video. One of the more important registry settings related to the Windows 10 upgrade process is a Windows Update policy setting called DisableOSUpgrade. You can set this value manually, or by editing a property in the Local Group Policy Editor control panel (gpedit.msc). You can find instructions on how to set this property in this knowledge base article.

The 'Turn off the upgrade to the latest version of Windows through Windows Update' option in the Local Group Policy Editor manages the DisableOSUpgrade registry value.

The registry value doesn't exist by default; you must create it manually and set it to 1 (or do so indirectly via the Policy Editor) in order for it to take effect. Also keep in mind that you have to enable this setting in order to disable some Windows 10 upgrade scenarios. One observation here: I've noticed that if you set the DisableOSUpgrade setting manually, that change doesn't get reflected in the Local Policy Group Editor... you can't always trust what you see in the control panel. The only way to be sure the value exists and is set properly is to navigate to the correct location in Regedit (or use the "Save Diagnostic Logs" feature of GWX Control Panel, which will tell you if it determines that the registry value is missing or incorrect).

In the video I discussed a couple of upgrade-related settings that get reset by various KB3035583 background tasks. While I haven't seen any background tasks change the DisableOSUpgrade setting, the registry value is not necessarily permanent, either. The problem is that Microsoft occasionally pushes update patches for Windows Update itself, and these patches sometimes wipe out existing Windows Update settings, including the DisableOSUpgrade value. (Here's an example of one such patch where I and several of my users observed this behavior.) These Windows Update client updates are kind of special, because Microsoft can push them to your computer automatically, even if you have your Windows Update settings configured to "Check for updates but let me choose whether to download and install them" or "Download updates but let me choose whether to install them." This is because they sometimes include necessary changes in order to communicate properly with Microsoft's update servers.

I don't believe this is a malicious or targeted change on Microsoft's part (it's essentially a re-install/clean slate for Windows Update sometimes), but the fact is that you can't expect your Windows 10-related registry changes to "stick" 100% of the time.

Luckily, this is yet another system setting that GWX Control Panel checks for (ever since version 1.3), and the program's Monitor Mode will alert you if any recent updates delete or otherwise change your settings- also and give you the chance to fix it with a single click.

SUMMARY

The TL;DR version of this post is:
  • You can configure several aspects of Windows 10 upgrade behavior by tweaking some registry settings, although concrete information on these settings can be hard to find.
  • Some of these Windows settings can change while you're not looking, as a result of scheduled tasks or occasional Windows Update patches, so some vigilance is advisable if you're intent on keeping your current operating system and minimizing unwanted upgrade notifications.
  • The KB3035583 patch is a lot more than just the "Get Windows 10" icon, and some of its associated scheduled tasks can revert system settings that you change manually.
  • Uninstalling KB3035583 doesn't always actually remove the program files, since Windows only lets you uninstall the most recent version of the update. If you already had a version of the patch installed before the most recent one landed on your system, "uninstalling" the patch will just restore the previous version.
  • GWX Control Panel isn't required to prevent Windows 10 and its associated annoyances, but it's a convenient, quick, and safe way to check and change your settings and fix other Windows 10-related problems and annoyances.