http://qs1969.pair.com?node_id=263858

We know that Windows "shortcuts" aren't really symbolic links; only Windows Explorer and certain other applications can make sense of them. Now your perl program can, too. This uses OLE to access the contents of a shortcut.
use Win32::OLE; my $wsh = new Win32::OLE 'WScript.Shell'; sub read_shortcut { my $lnk_path = shift; # path of existing .lnk file my $shcut = $wsh->CreateShortcut($lnk_path) or die; $shcut->TargetPath } sub write_shortcut { my $lnk_path = shift; # path of new .lnk file my $target_path = shift; my $comment = shift; # optional my $shcut = $wsh->CreateShortcut($lnk_path) or die; $shcut->{'TargetPath'} = $target_path; $shcut->{'Description'} = $comment if defined $comment; $shcut->Save; } print "c:\\foo.lnk points to ", read_shortcut("c:\\foo.lnk"); # In fact, the shortcut file can be .url too, not just .lnk, # in which case it is an "internet shortcut", and the target # path is a URL. write_shortcut( "c:\\perlmonks.url", "http://perlmonks.org" );

Replies are listed 'Best First'.
Re: Read and write Windows "shortcut" links (cpan)
by tye (Sage) on Jun 09, 2003 at 15:09 UTC
Re: Read and write Windows "shortcut" links
by Anonymous Monk on Feb 22, 2013 at 08:28 UTC

      If you're curious about the binary .lnk format read Image::ExifTool::LNK

      exiftool can read .lnk files and dump the data without using Win32::OLE , works even on linux

      $ exiftool local.file.xp.test ExifTool Version Number : 9.13 File Name : local.file.xp.test Directory : D:/shellify.0.4.src/ShellifyTest/Fil +es File Size : 498 bytes File Modification Date/Time : 2010:07:24 10:19:18-07:00 File Access Date/Time : 2013:02:22 05:10:21-08:00 File Creation Date/Time : 2013:02:22 02:27:09-08:00 File Permissions : rw-rw-rw- File Type : Windows Shortcut MIME Type : application/octet-stream Flags : IDList, LinkInfo, RelativePath, Work +ingDir, Unicode File Attributes : Archive Create Date : 2004:08:19 05:16:19-07:00 Access Date : 2010:07:09 00:37:36-07:00 Modify Date : 2004:08:05 04:00:00-07:00 Target File Size : 2 Icon Index : (none) Run Window : Normal Hot Key : (none) Target File DOS Name : desktop.ini Drive Type : Fixed Disk Volume Label : SYSTEM Local Base Path : C:\WINDOWS\desktop.ini Relative Path : .\desktop.ini Working Directory : C:\WINDOWS Machine ID : al-0145

        Excellent. Thank you!