Как Windows определяет какую иконку отображать у имени EXE-файла?
Иконка берется из ресурсов.
Для иконок в ресурсах EXE или DLL-файлов имеются 2 типа групп данных: RT_GROUP_ICON - описание группы иконок RT_ICON - непосредственно иконки
Как выбирается иконка: Если EXE или DLL-файл имеется хотя бы один ресурс группы RT_GROUP_ICON Windows возьмет первый попавшийся в перечне ресурс (в 95ом Windows брался первый в алфавитном порядке названия ресурса =). Если ресурсов группы RT_GROUP_ICON не существует, Windows выбирает иконку из группы RT_ICON с минимальным идентификатором (номером).
Если exe не содержит ресурсы групп RT_GROUP_ICON и RT_ICON берется системная иконка для приложений по-молчанию.
Если в выбранном ресурсе группы RT_GROUP_ICON указано несколько иконок, то выбирается иконка по размеру и глубине цвета соответствующая месту и типу показа или близкая к указанным параметрам по следующему алгоритму: 1) Если подходящих по размеру иконок несколько, из них выбирается подходящая по глубине цвета в системе. 2) Если подходящих по глубине цвета иконок несколько, из них выбирается иконка с максимальной глубиной цвета не превышающей системные настройки системе. 3) Если по предыдущим параметрам все ещё подходит несколько иконок берется первая.