There are symlinks in Windows all over the place for backwards compatibility. Just look at "Documents and Settings", it's a symlink to ”Users".
Yet, you still have to install the same libraries with every app over and over, even though they can be shared. Why? Because Windows has no sense of default library locations, except for the things it absolutely needs to work.
Probably just log in an out, but still, I fail to see how this is easier than changing some_bool_setting from =true to =false is harder... maybe because you actually know what you're changing, so that makes it scarier 🤔.
Nowadays, yes. Go back 15+ years, the registry was used extesively.
My reasoning as to why, Linux was never a targeted platform for software back then, now it is. There was only GTK back then and it didn't look "nice" (appealing) at all. Plus GTK apps were huge for Windows, since you'd have to also install the GTK runtimes and all that... that just took a lot of disk space, which was expensive back then. Compared to an app that does the same, but spends only 10% of the disk space needed for GTK (you could even go a lot lower with compressors), it's obvious why GTK was never a viable option when making a GUI app.
And since Linux doesn't have a registry (or even if it did, it'll probably be completely optional to have it or not, so you can't rely on users having it installed), you'd have to just save the settings in a file, just like the rest of the FOSS applications. So, it makes no sense to have completely different codebases for the same app for Windows and everything else. In fact, most apps nowadays that aim to be cross platform just use Qt. You can compile it for watever you like, there is no need to keep separate codebases.
I know that, the HOTKEY_* part of it was a mystery, why is the key hot... I mean, why does HK have to stand in front of it, it could be simple like just LM, CU, U (Users... still does nothing and nothing in it gets transfered as a setting in new user accounts), CR, etc.
Trust me, that is not Linux specific, Windows has that bullshit as well. Everything depends on how the devs wanted to solve the local settings problem, and if you have devs that work 1 or 2 years on the project and then quit, which in turn are replaced by other devs, you get this bullshit. The new ones usually don't wanna touch the old one's code, or if they do, they only make minor changes, just enough to make something that's not working, work.
Has anyone tried this, any software who has the path hardcoded?
I know for certain that some Adobe products did have these paths hardocded (past tense, haven't tried this now), because I moved my home/user directory on D:, yet they persisted to save the settings in C:\Users.
ProgramData is for admin stuff and things that need to be shared between users. AppData is for personalized settings per user. For example, AnyDesk stores the unattended access password in ProgramData, as well as the ID. Sure they do get copied to AppData when AnyDesk runs on boot/login on any user, but you could also have some user specific options (like language) and they get stored in a separate file in AppData.
Always remember, C:\ProgramData is the eqivalent of /etc in Linux. If they don't know where to put/hide shit, but needs admin priviliges to edit and users can only read, you put it in C:\ProgramData.