Нужно определить на что ссылается lnk файл. В случаее с регулярными файлами и папками всё понятно — их место положение будет указанно в интерфейсе IShellLink.
А что делать если в lnk файле находится ссылка на виртуальную папку или элемент shell`а?
Ниже привожу код в котором вытаскивается имя обьекта, но как вытащить тип или guid его я так и не осилил.
Подскажите, пожалуйста, как вытащить тип или guid обьекта!
shellLinkW.GetIDList(out pdlist);
IntPtr pidlRelative = IntPtr.Zero, ptrParent;
SHBindToParent(pdlist, IID_IShellFolder, out ptrParent, ref pidlRelative);
obj = System.Runtime.InteropServices.Marshal.GetTypedObjectForIUnknown(
ptrParent, System.Type.GetType("Shell.IShellFolder"));
IShellFolder ishellParent = (IShellFolder)obj;
STRRET ptrString;
retVal = ishellParent.GetDisplayNameOf(pidlRelative,
(uint)(SHGNO.SHGDN_NORMAL), out ptrString);
System.Text.StringBuilder strDisplay = new System.Text.StringBuilder(256);
retVal = StrRetToBuf(ref ptrString, pidlRelative, strDisplay,
(uint)strDisplay.Capacity);
System.Runtime.InteropServices.Marshal.ReleaseComObject(ishellParent);
pMalloc.Free(pidlRelative);
System.Runtime.InteropServices.Marshal.ReleaseComObject(pMalloc);