Re: How to create a relative shortcut ?
JJ <[email protected]> Thu, 4 Sep 2025 03:01:29 +0700
| Newsgroups | comp.os.ms-windows.programmer.win32,alt.comp.os.windows-xp,alt.windows7.general |
|---|---|
| Organization | A noiseless patient Spider |
| Message-ID | <[email protected]> |
On Tue, 2 Sep 2025 11:36:46 +0200, R.Wieser wrote: > Hello all, > > I'm trying to create relative shortcuts* (for use on a removable USB > harddisk) and can't seem to find out how it works. > > * the target of the link is relative to the location of the link itself. > > I'm programming against the IShellLink interface ( > https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nn-shobjidl_core-ishelllinka) , > which suggests a relative path is possible (SetRelativePath), but I'm not > able to get it to work or find code explaining how to do it. > > I did find this : > https://devblogs.microsoft.com/oldnewthing/20171019-00/?p=97247 , but I'm > not even sure if that is what I'm after ... :-| > > Question: does someone have an example to what I'm supposed to do to make it > happen ? > > Regards, > Rudy Wieser Shortcut file strictly use absolute path. The relative path part of it (set by SetRelativePath), is only use as a hint on resolving broken link. SetRelativePath documentation's remark: "The SetRelativePath method can be used to help the link resolution process find its target based on a common path prefix between the target and the relative path." Even if a relative path is used to set the (normal) Path field, the Shell Link API will expand it to a full path. Also, SetIDList only accept absolute IDList. The only way to create a shortcut file with its Path field set to a relative path, is to craft the shortcut file without using Shell Link API. Though, I'm not sure about the actual result when such shortcut file is used, since the Shell Link API is expecting absolute paths for all fields.