После долгих поисков я обнаружил, что значок по умолчанию не тот, с самым низким идентификатором.
Windows использует несколько размеров одного значка для разных вещей. Для получения дополнительной информации смотрите здесь , но вкратце вот важная информация:
Когда система отображает значок, она должна извлечь соответствующее изображение значка из файла .exe или .dll. Система использует следующие шаги для выбора изображения значка:
Выберите ресурс RT_GROUP_ICON.
Если более одного такого ресурса
существует, система использует первый
ресурс, указанный в ресурсе
сумы.
Выберите соответствующее изображение RT_ICON
из ресурса RT_GROUP_ICON. Если
существует более одного изображения,
Система использует следующие критерии
выбрать изображение:
Изображение, наиболее близкое по размеру к
запрашиваемый размер выбран.
Если два или более изображения этого размера
присутствуют, тот, который соответствует
глубина цвета дисплея выбрана.
Если изображения не соответствуют цвету
глубина отображения, изображение с
наибольшая глубина цвета, которая делает
не превышать глубину цвета
дисплей выбран. Если все превышают
глубина цвета, самая низкая
глубина цвета выбрана.
Примечание: Система обрабатывает все глубины цвета 8 или более пикселей на дюйм как равные. Следовательно, нет никакого преимущества в том, чтобы включать 256-цветное изображение 16x16 и 16-цветное изображение 16x16 в один и тот же ресурс - система просто выберет первое, с которым сталкивается. Когда дисплей находится в режиме 8 бит / с, система выберет 16-цветный значок вместо 256-цветного значка и отобразит все значки, используя системную палитру по умолчанию.
Поскольку запрашиваемый размер составляет 16x16 (потому что это маленький размер значков системы, т.е. размер значков по умолчанию), я думаю, мы можем сказать, что значком по умолчанию является значок из первой группы значков, который имеет наименьший размер (может существовать не меньший значок, чем 16x16) с максимальной глубиной цвета.
РЕДАКТИРОВАТЬ: небольшая коррекция. Вероятно, в ресурсах может быть значок размером менее 16x16, но это означает, что у файла нет значка по умолчанию, и система вместо этого предоставляет собственный значок.