Чтобы связать значок с вашим расширением, вам нужно создать для него запись в реестре, а значок, связанный с расширением, ничего не значит, если вы не связываете какую-либо программу для его открытия с вами, что тоже можно сделать в реестре например,
Создайте запись для имени иконки вашей программы, например,
HKCU \ Software \ Classes \ myprog.file.xyz
в HKCU \ Software \ Classes \ myprog.file.xyz создать записи для значка по умолчанию
HKCU \ Software \ Classes \ myprog.file.xyz \ DefaultIcon
здесь вы можете указать путь к значку или к вашему приложению, а значок будет взят из ресурса
Создайте запись для команд Open и других, если вы хотите, чтобы ваше расширение открывалось правильно
например HKCU \ Software \ Classes \ myprog.file.xyz \ Shell \ Open \ Command
и введите путь к вашей программе или любой другой программе
аналогично вы можете добавить команду для просмотра / печати и т. Д.
Теперь вы должны сообщить реестру, что расширение .xyz должно использовать информацию из HKCU \ Software \ Classes \ myprog.file.xyz
поэтому создайте запись
HKCU \ Software \ Classes.xyz = myprog.file.xyz
На самом деле, если вы хотите, вы можете напрямую указать 1-3 в HKCU \ Software \ Classes.xyz, но это перенаправление - лучший способ сделать что-то.
потому что теперь вы можете просто назначить myprog.file.xyz многим расширениям, например .xxx, .yyy или .zzz и т. д.
Теперь, используя модуль Python _winreg (http://docs.python.org/library/_winreg.html), вы можете создавать все эти программы программно.
например этот скрипт установит xyz в python icon
from _winreg import *
xyzKey = CreateKey(HKEY_CLASSES_ROOT, ".xyz")
SetValue(xyzKey, None, REG_SZ, "MyTest.xyz")
CloseKey(xyzKey)
myTestKey = CreateKey(HKEY_CLASSES_ROOT, "MyTest.xyz")
iconKey= CreateKey(myTestKey, "DefaultIcon")
CloseKey(myTestKey)
SetValue(iconKey, None, REG_SZ, "D:\\Python25\\python.exe")
CloseKey(iconKey)