2

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への参照を省略し、My Programをターゲットとして使用する場合は正常に機能しますが、両方をターゲットに含めると、ウィンドウを介してターゲットを編集するときに正常に機能します。

どんな助けでも大歓迎です。

4

1 に答える 1

2

MSAccessをランタイムモードに設定していないことが原因だと思います。

"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();
于 2012-07-23T21:47:57.150 に答える