В указанном выше коде перед CoInitialize забыл указать
SHGetSpecialFolderPath(NULL,fpath1,CSIDL_DESKTOP ,0);
sprintf(fpath1,"%s\\%s.lnk",fpath1,"Start my programm");
Короче создается иконка на рабочем столе для проги. Если файл уже существует, то поварьировав SetIconlocation можно указать чтобы ярлыку присваивалась любая другая икона. Подходит для любого типа файлов.