Es funktioniert folgendermaßen. Wenn du in der Registry eine Dateierweiterung aufschlägst, z.b. HKEY_CLASSES_ROOT\.txt, dann findest du im Standardwert des Schlüssels den Typenbezeichner. In unserem Falle ist dies der Wert: txtfile.
Nun suchst du wiederrum diesen Schlüssel auf:
HKEY_CLASSES_ROOT\txtfile\DefaultIcon
Im Standardwert steht dann der Pfad zur Icon Resource drin:
%SystemRoot%\system32\imageres.dll,-102
Der erste Teil ist der Pfad zur
DLL oder EXE, welche die Resource enthält und die Ziffer hinter dem Komma ist der Icon Index innerhalb der Resourcen Library. Durch ändern dieses Wertes kannst du das assoziierte Dateiicon ändern. Ich meine mich allerdings zu erinnern, dass Windows die Änderung erst nach einem Neustart der explorer.exe übernimmt.
Es gab auch eine Funktion, die man benutzen konnte, um ohne Neustart auf die Änderung hinzuweisen. Allerdings ist mir der Name entfallen.