gpt4 book ai didi

c# - 如何在 C# 中创建相对的 Windows 快捷方式?

转载 作者:可可西里 更新时间:2023-11-01 11:15:55 41 4
gpt4 key购买 nike

我试图在这里结合两个问题: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/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com