You can not call IShellLink method SetPath with a full parsable path to a namespace extension in Windows 7. Instead you have to call IShellLink SetIDList. Once you have set the id list and save the .lnk file via IPersistFile Save method the shortcut will find your namespace extension (on open). However, CLSID_ShellLink is unable to render the Image via IExtraceImage for the link if the link is to an image (or other file type that supports IExtractImage). Instead it renders the default icon for your perceived type. It asks your namespace extension for the perceived type via IShellFolder2::GetDetailsOf.