I've been looking around the Internet for a solution to "Cumulative Update for Windows 10 Version 1511 for x64-based Systems (KB3147458)" failing to update; and while there are a multitude of success stories out there, none of the solutions worked for me.
In researching an unrelated issue, it occurred to me that I may have a customization that might be interfering with this update, and the (now mandatory...sigh) Windows Update process:
I have moved my \Users directory to a custom location using a junction (a symbolic link/shortcut).
There are many (unsupported) ways to do this, and a quick Google shows that a multitude of people are not happy with the standard "Users folder lives on the system disk and you can move libraries/directories using the System Settings" solution provided by Microsoft. This is especially common for folks who boot from an SSD, but have tons and tons of large files which wouldn't fit on that SSD; especially if you anticipate the need to create new user accounts but don't want to write a script or hand-configure each new account to move the directories to the secondary volume via the available System Settings.
My method (as found online) was to robocopy my initial Users folder just after a clean install of Windows 10, and then create a junction at C:\Users which pointed to D:\Users (which is my large HDD).
This causes a problem with some updates when they need to make adjustments to files stored within \Users.
Windows Update looks at the registry to find the location of the \Users directory, and also the \Users\Default and \Users\Public directories (if an update requires changes to them). In my case, Windows update could not locate the \Users directory because I had moved it, and Windows Update does not (always) follow junctions.
The Solution: Tell Windows where to go
Windows holds the location of the \Users, \Users\Default, and \Users\Public directories in some registry entries under the following key:
Now, while this key has sub-keys, it's the four string values (REG_EXPAND_SZ) we are interested in. They are:
- Default (Note: Not "(Default)", but "Default")
All of these contain paths to the respective directory locations beginning with the Environment Variable %SystemDrive%, which normally expands to "C:" (unless you use a different drive letter for Windows, which I do not). That means, for example, that when looking for the Default profile directory, Windows Update attempts to access "C:\Users\Default". For whatever reason, Windows Update will NOT resolve the junction at C:\Users pointing to my D:\Users and, by extension, will not find D:\Users\Default. I fixed this by replacing %SystemDrive% with "D:" for the appropriate paths so that Windows Update had a direct path to the built-in profiles and \Users directory. The update then worked on the first try!
If you have been pulling your hair out over this one and have tried everything else (The Windows Update repair tool, etc) and nothing seems to work and you have made this modification to your system and have NOT already updated your registry to reflect the new location of your profiles, this may be exactly what you are looking for - and may also prevent this problem in the future should another update touch something in the profiles (probably tweaking something in \Users\Default so that new users created have the fix already applied).
Please note that I have NOT tried anything else after doing this (creating accounts, etc) so TRY THIS AT YOUR OWN RISK, and please TEST, TEST, TEST. If I run into any issues I will report back to this thread. Hope that saved a headache!