如何在 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 文件)