可以通过编程方式创建全局快捷方式.lnk吗?

时间:2015-07-27 20:22:10

标签: c# desktop-shortcut

我目前正在以编程方式创建快捷方式,但是我想知道C#是否可以以类似的方式创建全局快捷方式。

以下是我的代码:

WshShell shell = new WshShell();
string shortcutLocation = "pathToShortcut//Shortcut1.lnk"
IWshShortcut shortcut = shell.CreateShortcut(shortcutLocation);
shortcut.Arguments = "foo bar";
shortcut.Description = "Test Shortcut";
shortcut.TargetPath = "pathToShortcutExe";
shortcut.WorkingDirectory = "pathToWorkingDirectory"
shortcut.Save();

此代码非常适合为用户创建快捷方式,但我想知道是否存在为系统执行此操作的方法。我已经看到全局安装的程序在所有用户上放置了快捷方式,所以我很好奇如何在C#中实现这种效果。

1 个答案:

答案 0 :(得分:2)

是的你可以.. 你必须添加一个参考项目>添加参考> COM> Windows脚本宿主对象模型。

    using IWshRuntimeLibrary;

    private void CreateShortcut()
    {
      object shDesktop = (object)"Desktop";
      WshShell shell = new WshShell();
      string shortcutAddress = (string)shell.SpecialFolders.Item(ref shDesktop) + @"\Notepad.lnk";
      IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(shortcutAddress);
      shortcut.Description = "New shortcut for a Notepad";
      shortcut.Hotkey = "Ctrl+Shift+N";
      shortcut.TargetPath = Environment.GetFolderPath(Environment.SpecialFolders.System) + @"\notepad.exe";
      shortcut.Save();
    }