Unfortunately, this sort of thing seems to snowball. MS bends over backwards to preserve backwards compatibility, so third-party vendors basically have free reign to abuse the OS, requiring MS to bend over backwards even more to accommodate them, and on and on.
Apple, for example, had much less of a problem with this even before the days of the App Store and the accompanying restrictions, because developers largely knew that if they depended on undocumented behavior there was a good chance that their app would break and Apple wouldn't fix it for them.
There are many stories to MS doing this. There are actually tons of conditionals in the MS source and kernel explicitly to fix broken vendor code. Look up the SimCity fixes they put in the Win Malloc to fix bugs Maxis wouldn't so that upgrades wouldn't break the game, despite the bug being entirely Maxis' fault.
Such things are no longer fixed directly in the kernel or other OS code. They have shims that can be enabled on a per-application basis that sit between system calls and the program. Those can then fix such things, e.g. lie about the OS version, allocate a little more than requested to avoid buffer overruns, etc. Windows then ships with a database which application requires which shims; in Vista that included some 5500 programs.
And how. My company relies on a lot of in-house software that was built against Microsoft technologies from the 1990s, and are still supported. We have plenty of resources; we could port/rewrite them if we needed to. But that isn't cheap, and I imagine we've saved a lot of money over the years thanks to Microsoft's devotion to backward-compatibility on Windows. Not just development cost, but cost related to software defects we have not created because we've been able to leave already-working software in place.
(Web applications that rely on ActiveX, on the other hand. . .)
Apple, for example, had much less of a problem with this even before the days of the App Store and the accompanying restrictions, because developers largely knew that if they depended on undocumented behavior there was a good chance that their app would break and Apple wouldn't fix it for them.