如何在 C# 中使用多个引用编辑快捷方式的目标路径

Posted

技术标签:

【中文标题】如何在 C# 中使用多个引用编辑快捷方式的目标路径【英文标题】:How to edit a target path of a shortcut in c# with multiple references 【发布时间】:2012-07-23 21:36:21 【问题描述】:

我正在使用 WshShell VS2010 .Net 4 和 ant 创建一个快捷方式,以便能够创建一个引用 AccessRuntinme 然后是我们的应用程序的目标路径。到目前为止,在我运行程序并单击按钮之前,这是我没有错误的。

 private void CreateShortCut64()
    
        object shDesktop = (object)"Desktop";
        WshShell shell = new WshShell();
        string shortcutAddress = (string)shell.SpecialFolders.Item(ref shDesktop) + @"\LinkName.lnk";
        IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(shortcutAddress);
        string targetPath64 = "\"C:\\Program Files (x86)\\Microsoft Office\\Office12\\MSACCESS.EXE\" \"C:\\Program Files (x86)\\My Program\\Prog.accdr\"";
        shortcut.Description = "Program";
        shortcut.Hotkey = "Ctrl+Shift+A";
        shortcut.TargetPath = targetPath64;
        shortcut.IconLocation = "c:\\Program Files (x86)\\My Program\\" + @"\Prog.ico";
        shortcut.Save();
    

如果我省略了对 Access Runtime 的引用并且只将我的程序作为目标,但我希望在通过 windows 编辑目标时可以正常工作的目标中同时包含这两个目标,则上面的示例可以正常工作。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

我怀疑这是因为您没有将 MS Access 设置为运行时模式:

"C:\Program Files (x86)\Microsoft Office\Office12\MSACCESS.EXE" /runtime "C:\Program Files (x86)\My Program\Prog.accdr"

编辑re cmets

shortcut.TargetPath = "\"C:\\Program Files (x86)\\Microsoft Office\\Office12\\MSACCESS.EXE\";
shortcut.Arguments = "\"C:\\Program Files (x86)\\My Program\\Prog.accdr\" /runtime";

我在安装MS Access 2010 x64的情况下进行测试,所以路径名不同,否则代码与OP非常相似。

object shDesktop = (object)"Desktop";
WshShell shell = new WshShell();
string shortcutAddress = (string)shell.SpecialFolders.Item(ref shDesktop) + @"\LinkName.lnk";
IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(shortcutAddress);
shortcut.Description = "Program";
shortcut.Hotkey = "Ctrl+Shift+A";
shortcut.TargetPath = "\"C:\\Program Files\\Microsoft Office\\Office14\\MSACCESS.EXE\"";
shortcut.Arguments = "\"C:\\Program Files (x86)\\My Program\\Prog.accdr\"  /runtime";
shortcut.IconLocation = "c:\\Program Files (x86)\\Abtrac\\" + @"\Prog.ico";
shortcut.Save();

【讨论】:

我已经尝试过了,不幸的是它不起作用。我认为问题在于目标设置了多个值,因为我可以将其设置为“C:\Program Files (x86)\Microsoft Office\Office12\MSACCESS.EXE”或“C:\Program Files (x86 )\My Program\Prog.accdr" 但不是两者结合(添加或不添加 /runtime)。 如果您尝试在没有 /runtime 开关的快捷方式中运行 accdr,您将收到错误消息。我创建了一个桌面快捷方式并进行了测试。 这是我从 Accdr 创建的程序的目标,而不是 c# 程序 "C:\Program Files (x86)\Microsoft Office\Office12\MSACCESS.EXE" "C:\Program Files (x86)\My Prog\Prog.accdr" /runtime 这工作正常 我添加了一个注释,用c#测试过。 嗨 Remou,您已经测试或将要测试?感谢您的帮助

以上是关于如何在 C# 中使用多个引用编辑快捷方式的目标路径的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中使用命令行参数创建应用程序快捷方式(.lnk 文件)

C#如何保证获取当前应用程序的绝对路径是对的?

Qt/Win 创建应用快捷方式

怎样复制文件路径

警告1909无法创建快捷方式* lnk请验证目标文件夹是不是存在以及是不是可以访问它

C#:快捷方式和模拟