What it does . . .
The first thing InControl does upon starting is verify that it's running on a non-Enterprise and non-Server edition of at least Windows 10. Earlier versions of windows lack the support for most of the Registry keys that InControl uses and Enterprise and Server editions are never upgraded automatically by the Windows Update facility.
- If InControl finds that the Windows version and edition does not need InControl, it will display one of three messages explaining its reason for being unnecessary.
- If the edition and version of Windows qualifies it then looks for the presence and value of all six of the Registry keys that it manages. If all six of them are present and properly set to instruct Windows Update to target a single specified Windows version and feature update it will display the “YOU are in control” message.
- If some of those six Registry keys are missing or not correctly set it will inform its user that upgrades are only partially controlled on this system and indicate how many of the 6 key values are missing.
- If none of those six Registry keys are present or properly set the “OS upgrades are not under your control” message will be displayed.
What six Registry keys? . . .
InControl creates and manages the following six Registry keys. As noted above, they must all exist and have the proper values for InControl to indicate that the user is in control:
- HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate
- TargetReleaseVersionInfo = {Feature release such as “21H1”, “21H2”, etc.}
- TargetReleaseVersion = 1
- ProductVersion = {Windows major version, “10”, “11”, “12”, etc.}
- DisableOSUpgrade = 1
- HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsStore
- HKEY_LOCAL_MACHINE\SYSTEM\Setup\UpgradeNotification
When the user clicks “Release Control” all six of these optional key names & values are deleted from the Registry and Windows Update will return to its normal operation.
InControl Version History
- v1.0.0 ‑ Initial release.
- v1.0.1 ‑ (2022/02/14) Added the “updates partially controlled” feature. Also added a feature to use the operating system internal build number as the first reference for determining the OS feature release. I was initially using the “DisplayVersion” from the Registry, but we found that it wasn't always present or accurate.
- v1.0.2 ‑ (2022/02/15) For the versions and editions of Windows that do not need InControl, the two edit fields, their labels and the button are all removed rather than just being disabled to unclutter and simplify the interface.
FAQ
Q:Does InControl automatically update itself?
A:No. GRC's code typically settles down very quickly and then goes for years without problems or bugs. We expect InControl to only need updating when Microsoft introduces Windows 12 (and perhaps not even then). Since major Windows versions tend to occur only every six years or so, we decided to keep the app as clean and simple as possible.
The other consideration is that anti-malware scanners tend to generate many more false-positive hits when they see networking code in an app. Our DNS Benchmark and SQRL both already had networking, so adding version checking made sense there. But since InControl doesn't need any networking, it made more sense not to add it just for “probably never needed” version checking.
Q:Can InControl regress Windows to a previous version? Like move back to Windoss 10 from 11?
A:Unfortunately, No. InControl only controls Windows Update, and Windows Update is not able to move backward (even when going forward seems like going backwards!)
Q:Can InControl be used to hold only the current major release version – like Windows 10 – but still allow the annual feature releases to happen?
A:We don't think so. This is all frustratingly undocumented by Microsoft. But it appears that the reason Microsoft added support for a “Version” in the Registry is because both Win10 and Win11 call their most recent feature releases “21H2.” So it was necessary to be able to specify which 21H2 the user was refering to. It seems unlikely that leaving the “TargetReleaseVersion” unspecified would cause Windows Update to honor the “ProductVersion” by itself.
InControl