shims just sound like a lame hack. using a shim means you've given up on elegance and respectability
Shims allow Microsoft to fix bugs in Windows without affecting applications. Changing how any API call works, even to fix something that is clearly wrong, can cause major problems, because there could very well be applications out there that rely on the broken behaviour.
I'll give you a practical example. In Windows 7, they fixed the CreateFileEx() API call, which is used to create and open files. Pretty much every application out there uses this API, so changing how it works would be about as dangerous as changing how a core CLI utility on Unix like "sed" or "grep" works and then rolling out the change to production systems around the world.
The bug in Vista (but has existed in Windows for quite some time) is that if you were you request exclusive read access on a file that you do not have full access to, Windows would silently change your lock on that file to "shared read" access. Which is, of course, not what you asked for. There are plenty of other cases in CreateFileEx() where the API call will fail if you ask it to do something your user account doesn't have permission to do. They fixed this in Windows 7, but this is obviously a case where fixing a bug in Windows will cause many applications to crash or not function properly.
In order to provide this bug fix, and therefore make Windows better, they've added in a new (optional) application compatibility manifest that new applications can use that says, "hey, I want the Windows 7 behaviour!", and this CreateFileEx() fix -- as well as a number of other bug fixes -- will be in place for your application. Microsoft is saying that they will also maintain that defined compatibility level through future versions of Windows, too, i.e. on Windows 8, you'll get the Windows 7 API behaviour.
Sure beats having to keep up with KDE's world-breaking changes every few years, don't you think?
There really is no other good way of going about this. An "elegant and respectable" solution would probably involve every software company, ever, fixing every bug in their software, ever, that prevents their application from being compatible with Windows 7. What do you suppose the chances of that happening are? You might as well be a seven-year-old girl asking for a live unicorn for your birthday... you just might have better luck! A lot of software that needs to run on Windows is in-house jobbies written years ago by people who'd just learned the difference between "If" and "While" BASIC statements. It would likely cost a lot of money to scour the whole code-base and fix it... and that's if they even still have the code and can find someone to do the work! (What if the contractor ran off with it and is holding it for random? I've got a friend who's dealing with that very issue right now!!)
Microsoft's solution to this problem is to give IT people the ability to analyze the software they have to run and to apply shims to make it work. Microsoft will even help companies with this, often for no cost at all.
Elegance is nice, but it can be prohibitively expensive. Shims are for the real world.