Jo, geht für eine „echte“ binärformatige Verknüpfung wohl nicht anders als eine Skriptsprache zu bemühen.
Eben zum Beispiel mit
set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop")
set oShellLink = WshShell.CreateShortcut(strDesktop & "\Beispiel.lnk")
oShellLink.TargetPath = "C:\banana.png"
oShellLink.WindowStyle = 1
oShellLink.Hotkey = "CTRL+SHIFT+F"
oShellLink.IconLocation = "b1.exe, 0"
oShellLink.Description = "Shortcut Script"
oShellLink.WorkingDirectory = strDesktop
oShellLink.Save
… wo man ggf. noch einen Parser für Kommandozeilen-Argumente herumbasteln müsste, bzw. unter AutoIt:
FileCreateShortcut ( "file", "lnk" [, "workdir" [, "args" [, "desc" [, "icon" [, "hotkey" [, icon number [, state]]]]]]] )
… wo die Parameter dieselbe Bedeutung wie oben haben.
Auch wenns mich gerade wurmt, dass man das scheinbar ohne Weiteres nicht auch mit bloßen API-Aufrufen, die man per rundll32 absetzen könnte, erledigen kann.