如何在C#中创build一个相对的Windows快捷方式?

我想在这里结合两个问题:1) 如何在Windows中创build一个相对的快捷方式和2) 如何 在C#中 创build 一个Windows快捷方式

我有以下代码来创build快捷方式(基于我所见过的问题),但是当分配shortcut.TargetPath时会引发exception:“值不在预期的范围内”

 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(); } 

我如何解决这个问题,并创build我的相对捷径?

注意:我不想编写批处理脚本来完成这个任务,因为我的软件很可能会安装在用户无法访问命令行的PC上 – 我们的客户通常拥有非常locking的机器,几乎肯定没有正确的权限来运行batch file。 如果您对如何创build“便携式”文件夹(使用子文件夹中的.exe)时有任何build议,用户只需双击顶级文件夹中的某些内容即可运行该exe文件,则可以build议!

你不能把参数放在TargetPath属性中。 (见MSDN )

把它们放入Arguments – 属性:

 public void CreateShortcut() { IWshRuntimeLibrary.WshShell wsh = new IWshRuntimeLibrary.WshShell(); IWshRuntimeLibrary.IWshShortcut shortcut = wsh.CreateShortcut(Path.Combine(outputFolder, "sc.lnk")) as IWshRuntimeLibrary.IWshShortcut; shortcut.Arguments = "/c start \"\" \"%CD%\\folder\\executable.exe\""; shortcut.TargetPath = "%windir%\\system32\\cmd.exe"; shortcut.WindowStyle = 1; shortcut.Description = "executable"; shortcut.WorkingDirectory = "%CD%"; shortcut.IconLocation = "P:\ath\to\any\icon.ico"; shortcut.Save(); }