I dual-boot Windows XP and Windows 7 and have run into a peculiar issue with icons for shortcuts.
A different desktop is used for each OS, so I have a shortcut to the other one on each for easy access to both from either version of Windows; that is, in XP, the desktop contains a shortcut called
7Desk and in 7, the desktop contains a shortcut called
7Desk.lnk is set to use the desktop icon resource of
shell32.dll from Windows 7, and
XPDesk.lnk is set to use the desktop icon resource of
shell32.dll from Windows XP. That way, each shortcut shows the other OS’s icon for the desktop.
The problem is that even though in the Change Icon dialog I can see the correct icons (for the other OS), when I click OK, the icon shows the corresponding icon from the currently booted OS instead of the other one. I have confirmed this to occur for other icon resources as well like the Recycle Bin icons.
This is baffling because as far as Windows (and the Change Icon dialog) are concerned,
shell32.dll from the other drive is just a file containing icons. There is no reason for it to treat the DLL specially, and even more mysterious is how it knows which of its own icons to use in place of it. That is, how does XP know to use the XP desktop icon in place of the 7 desktop icon, or how does 7 know to use the 7 recycle bin icon in place of the XP recycle bin icon? And just to make things even more confounding, I have checked the LNK files in a hex-editor and can clearly see that the icon resource is indeed pointing to the file on the other drive, not simply to
(Granted, the icon indexes are the same, so perhaps it is simply using its own copy of
shell32.dll instead of the one specified on a different drive, but then, why is it doing that? Is it some sort of “AI” in the Change Dialog function, trying to do what it thinks we want instead of what we say?)
I can record a screen-cast if the problem is unclear.