Ich würde dir empfehlen, die Funktion ShellLinkResolve aus der JCL (
Unit JclShell) zu verwenden.
Diese Funktion ist bestimmt besser als deine, da dutzendfach getestet.
http://sourceforge.net/projects/jcl
Kleiner Auszug aus dem Sourcecode
Delphi-Quellcode:
PersistFile := ShellLink as IPersistFile;
// PersistFile.Load fails if the filename is not fully qualified
// AHA: hast du das beachtet ?
FullPath := ExpandFileName(FileName);
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, PChar(FullPath), -1, LinkName, MAX_PATH);
Result := PersistFile.Load(LinkName, STGM_READ);