У меня двойная загрузка Windows XP и Windows 7, и я столкнулся со специфической проблемой с иконками для ярлыков.
Для каждой ОС используется отдельный рабочий стол, поэтому у меня есть ярлык на другой для каждой из них для быстрого доступа к обеим версиям Windows; то есть в XP на рабочем столе есть ярлык под названием 7Desk
а в 7 на рабочем столе есть ярлык под названием XPDesk
. Кроме того, 7Desk.lnk
настроен на использование ресурса значков рабочего стола shell32.dll
из Windows 7, а XPDesk.lnk
настроен на использование ресурса значков рабочего стола shell32.dll
из Windows XP. Таким образом, каждый ярлык показывает значок другой ОС для рабочего стола.
Проблема заключается в том, что даже если в диалоговом окне « Изменить значок » я вижу правильные значки (для другой ОС), при нажатии кнопки «ОК» на значке отображается соответствующий значок загруженной в настоящий момент ОС вместо другой. Я подтвердил, что это происходит для других ресурсов значков, а также для значков корзины.
Это сбивает с толку, потому что для Windows (и диалогового окна « Изменить значок ») shell32.dll
с другого диска - это просто файл, содержащий значки. Там нет никаких оснований для того , чтобы лечить DLL специально, и еще более загадочный, как она знает , какие из его собственных иконок для использования вместо него. То есть, как XP узнает, как использовать значок рабочего стола XP вместо значка на рабочем столе 7, или как 7 знает, как использовать значок корзины 7 вместо значка корзины XP? И просто, чтобы еще больше запутать, я проверил файлы LNK в hex-редакторе и ясно вижу, что ресурс значка действительно указывает на файл на другом диске, а не просто на \windows\system32\shell32.dll
,
(Конечно, индексы значков одинаковы, поэтому, возможно, он просто использует свою собственную копию shell32.dll
вместо той, которая указана на другом диске, но тогда, почему он это делает? Это какой-то «ИИ» в функции « Изменить диалог» , пытающийся делать то, что он думает, что мы хотим, а не то, что мы говорим?)
Я могу записать скриншот, если проблема неясна.