Если нужно статически задать одну общую иконку для всех файлов с определенным расширением, то делается это через создание в HKEY_CLASSES_ROOT ключа, соответствующего этому расширению (подробное
руководство).
Если нужно динамически для каждого отдельного файла показывать разные иконки (извлекать из них или подгружать откуда-то снаружи), то придется писать
Icon Handler на С/С++.