The difficulty is, how do we get them to do this?
I think part of the problem, (apart from programmers' own laziness), is the way Windows has worked since Windows 95. Until then, if I have this right, all program installs were to their own dedicated folders. But with Windows 95 Microsoft introduced the Windows folder and the System folder, and shared .DLLs, (Dynamic Link Libraries). The idea was to cut down on duplicate files being installed all over the hard drive by allowing certain files like DLLs to be shared amongst applications.
That way, although software still includes all the files it needs to install correctly, if the install procedure finds an existing DLL of the same or newer version in the System or System32 folder, it bypasses installing its own version. The software is coded to look in that folder for the files it needs.
So uninstalling those files could make other software unstable, or just break them.
But then, I know that isn't the full story, and it doesn't explain why registry entries are left behind, not program file folders.
Mark
This is kind of along side the thread asking if we think registry cleaners are necessary.
I think that if programs had uninstall features worth a darn, they would eliminate most people's perceived need for registry cleaners. Because there would no longer be any left over crap in the registry to begin with. This is one of my biggest pet peeves. If programmers can write programs to spread all this stuff through the registry, why is is so hard to write the uninstall features that will completely clean up after themselves?
~Dave

Chowhound
Comic Vine
GameFAQs
GameSpot
Giant Bomb
TechRepublic