Holy cow, I wrote a book!
An example, all too frequent, of ways programs assume that
the user interface will never change is reaching into system
binaries and sucking out undocumented resources.
In the shell, we have fallen into the reluctant position of
carrying "dead" icons around for the benefit of programs
that assumed that they would always be available.
However, we often make these "orphaned" icons blank
so that these programs don't crash, but they don't necessarily
look all that wonderful either.
Recently, I learned of a new type of resource stealing:
For Windows Vista,
there have been many changes to the way the system internally
organizes its resources in order to support
the Multilingual User Interface feature.
One of the things we found was a handful of programs that reach
directly into Shell32.dll in order to obtain the
file copy animation.
Too bad (1) the animation isn't kept there any more,
and even if we moved the animation back to its original location,
(2) the animation uses a new compression scheme
that older programs can't handle.
Remember, resources in system DLLs should be treated as
implementation details, unless explicitly documented otherwise.
I'm not sure what we're going to do about the animation resource problem.
Should we declare these programs broken and make the people who bought
them go back to their vendors for upgrades?
(What if there is no vendor?)
Should we develop a shim and hope that those four are the only programs
that need it?
Should we carry the original animation in shell32.dll as junk?
If I told you that one of the programs that did this won
"Game of the Year" recently, would that change your answer?
What if another turned out to be a top-rated anti-spyware program?