It gets worse...
I sent this article to The Register at the weekend, after wasting many hours tracking down a drag'n'drop bug in my code (when running on Vista) which didn't exist.
Two addition comments to make:
First off, yes, I do now know that if I add a manifest file to my .exe, then this Vista problem goes away.
But first, you need to know that this filename quirk is what's CAUSING the problem in the first place. No such files are required in XP, and my program ISN'T doing anything even slightly malicious.
This problem all came about as my .exe (with "install" in it's filename) has a screen where you can drag'n'drop files into it. It doesn't change system files, doesn't overwrite Windows directories or anything... it simply lets you drag'n'drop files into it, and it was THIS behavior that refused to work under Vista, until I changed the .exe filename.
It gets worse though: I thought it would be useful to look out for this behaviour happening, so I could warn the user about it. But you can't do it.
If I kept the filename with "install" in it, and tried to use the 10+ year old Microsoft C++ GetVersionEx() function to test which operating system the .exe is running on, then Vista actually LIES.
It actually tells my app that it's running on a Windows "version 5.1" machine - or Windows XP to you and me.
So, my app can't allow users to drag'n'drop files into it due to a Vista security measure, but Vista then tells my app that it's running on Windows XP, so my app has no idea that this problem might be happening.
It's ridiculous !!!
Once again, if I remove "install" from the filename, it all works fine, and that GetVersionEx() function is back to telling my app that it's running on Vista.
Aaaah, I'm sure there's logic in there somewhere.