Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在具有多个引用的c#中编辑快捷方式的目标路径_C#_Visual Studio 2010_Ms Access 2007_Shortcut - Fatal编程技术网

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

如何在具有多个引用的c#中编辑快捷方式的目标路径,c#,visual-studio-2010,ms-access-2007,shortcut,C#,Visual Studio 2010,Ms Access 2007,Shortcut,我正在使用WshShell VS2010.Net 4和ant创建一个快捷方式,以便能够创建一个目标路径,该路径引用AccessRuntinme,然后引用我们的应用程序。这是我到目前为止没有任何错误,直到我运行程序并单击按钮 private void CreateShortCut64() { object shDesktop = (object)"Desktop"; WshShell shell = new WshShell(); stri

我正在使用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编辑目标时可以很好地工作


非常感谢您的帮助。

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

"C:\Program Files (x86)\Microsoft Office\Office12\MSACCESS.EXE" /runtime "C:\Program Files (x86)\My Program\Prog.accdr"
重新编辑评论

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,您已经测试了还是将要测试?谢谢你的帮助