Эммм... это стандартные иконки Винды. А если это специальный файл? Например аудио/видео? Тогда ему будет присвоена иконка проги, зарегестрированной для этого расширения. Например VLC для .avi. Поэтому, если самому не хочется ковырятся в HKCR и доставать иконки из приложений (что в принципе не так уж и сложно), то я бы присоединился к совету воспользоваться ф-ей SHGetFileInfo.
Если реестр, может, кто подскажет ветки?
В HKCR находишь ключ с расширением, например, .avi.
Смотришь самое первое значение ключа, например, VLC.avi.
Теперь там же, в HKCR, смотришь ключ с именем VLC.avi. В нём есть подключ "DefaultIcon". Первое значение в нём содержит необходимую для тебя инфу - прогу и номер иконки. Например, "C:\Program Files\VideoLAN\VLC\vlc.exe",0
По моему, винда, где-то все-таки кэширует иконки,
и чем-то их достает из кэша?
Да, где-то всё-таки она это делает, и при этом очень грязно. Поэтому, если ты хочешь сделать лучше - делай сам.