作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我试图在这里结合两个问题:1) How to create a relative shortcut in Windows和 2) How to create a Windows shortcut in C#
我有以下代码来创建快捷方式(基于我看到的问题),但是在分配 shortcut.TargetPath
时抛出异常:“值不在预期范围内”
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();
}
如何解决这个问题并创建我的相对快捷方式?
注意:我不想编写批处理脚本来执行此操作,因为我的软件很可能会安装在用户无法访问命令行的 PC 上 - 我们的客户通常非常锁定机器,并且几乎肯定没有运行批处理文件的正确权限。如果您对我如何创建一个“可移植”文件夹(我的 .exe 在子文件夹中)有任何建议,用户只需双击顶级文件夹中的某些内容即可运行 exe,我愿意建议!
最佳答案
您不能将参数放在 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();
}
关于c# - 如何在 C# 中创建相对的 Windows 快捷方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45677890/
我是一名优秀的程序员,十分优秀!