I'm trying to combine two questions here: 1) How to create a relative shortcut in Windows and 2) How to create a Windows shortcut in C#
I have the following code to create shortcuts (based on the questions I've seen), but it throws an exception when assigning shortcut.TargetPath: "Value does not fall within the expected range"
public void CreateShortcut() {
    IWshRuntimeLibrary.WshShell wsh = new IWshRuntimeLibrary.WshShell();
    IWshRuntimeLibrary.IWshShortcut shortcut = wsh.CreateShortcut(Path.Combine(outputFolder, "sc.lnk")) as IWshRuntimeLibrary.IWshShortcut;
    shortcut.Arguments = "";
    shortcut.TargetPath = "%windir%\\system32\\cmd.exe /c start \"\" \"%CD%\\folder\\executable.exe\"";
    shortcut.WindowStyle = 1;
    shortcut.Description = "executable";
    shortcut.WorkingDirectory = "%CD%";
    shortcut.IconLocation = "";
    shortcut.Save();
}
How do I fix this and create my relative shortcut?
NB: I don't want to have to write a batch script to do this as my software will most likely be installed on PCs where the user does not have access to a command line - our clients often have very locked-down machines and will almost certainly not have the right permissions to run batch files. If you do have any suggestions as to how I might create a 'portable' folder (with my .exe in a subfolder) where the user only has to double-click something in the top level folder to run the exe, I am open to suggestions!
 
    