Apparently Microsoft isn't allowed to evolve Windows with objectively better API's.
Have fun with your GetLastError, fifteen parameter functions, and poorly documented flags. But hey, at least it doesn't have much security, so I can download game mods from some unknown source that have full access to everything on my PC.
Way better security model
Unified error handling
Clean install/uninstall (no rot)
Much faster and more capable version of XAML running on top of DirectComposition with easy DirectX interop
Native support for web apps
Resolution independence with no extra work
Easier to support accessibility tools like screen readers
Saner API design (no flags where only some combinations are valid)
.Net Native
Much better touch support
Cross-platform (xbox, holo lens, IoT, phone...)
Access to devices like camera, mic, sensors with high-level APIs (even accessible through C#/JS)
No P/Invoke required for C#
You completely missed the point of my comment. "Objectively better" means that it's better in all accounts, as otherwise someone with different priorities could perceive it as worse, making it therefore only subjectively better.
And UWP is not better in all accounts. It grants Microsoft more control over the ecosystem, which is seen as negative by pretty much anyone who isn't Microsoft. Therefore someone who doesn't care so much about the advantages that you listed could perceive it as worse.
So, UWP is not objectively better, it's only subjectively better, which is why yes, people can very much justifiably complain about it.
Rule 1 of software development should be: Never blame the user, when the situation could have been avoided through code.
Especially in this case. Isolation has been one of the main drivers of operating systems. Isolation between users, so they can't change each other's files etc. maliciously . Isolation between processes, so they don't accidentally corrupt each other. At least since the first computer virus in the wild in 1982 it should have been clear that software can also potentially be malicious and needs to be isolated from having the same rights as the user executing it.
The only reason why executing arbitrary x86 code in ring 3 is dangerous are the syscall interfaces the operating systems offer.
Sometimes you do have to blame the user though. As an extreme example; if I take a hammer to my computer and when it eventually fails can I blame the faulty hardware?
Have fun with your GetLastError, fifteen parameter functions, and poorly documented flags. But hey, at least it doesn't have much security, so I can download game mods from some unknown source that have full access to everything on my PC.