use Win32::Shortcut (); my $s = Win32::Shortcut->new(); $s->Path('C:\\TEMP'); $s->Save('C:\\TEMP.lnk'); # Test the shortcut. # Make sure C:\TEMP exists. # Make sure you have no windows displaying C:\TEMP. system('start "C:\\TEMP.lnk"'); #### use strict; use warnings; use Win32::Shortcut (); # Examine existing shortcut to C:\WINNT. my $s1 = Win32::Shortcut->new(); $s1->Load('C:\\WINNT.lnk'); print map { my $key = $_; my $val = $s1->$key(); sprintf("%-17s %s\n", "$key:", defined $val ? $val : '[undef]' ) } qw( Path ShortPath Arguments WorkingDirectory Description ShowCmd Hotkey IconLocation IconNumber ); # Clone existing shortcut to C:\WINNT. my $s2 = Win32::Shortcut->new(); do { my $key = $_; my $val = $s1->$key(); $s2->$key($val); } foreach qw( Path ShortPath Arguments WorkingDirectory Description ShowCmd Hotkey IconLocation IconNumber ); $s2->Save('C:\\WINNT2.lnk'); system('start "C:\\WINNT2.lnk"'); # Create new shortcut to C:\TEMP. my $s3 = Win32::Shortcut->new(); $s3->Path('C:\\TEMP'); $s3->Save('C:\\TEMP.lnk'); system('start "C:\\TEMP.lnk"');