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

Can a global Shortcut .lnk be created programmatically?

我目前正在以编程方式创建快捷方式,但我想知道是否可以在 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# 中实现这种效果。

是的,你可以.. 您必须添加引用项目 > 添加引用 > 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();
    }