27

我一直在寻找一种在 C# 中创建文件快捷方式的简单方法,但我只找到了执行此操作的外部 dll。这实际上非常令人惊讶,没有内置的方法可以做到这一点..

无论如何,我知道 lnk 文件只是具有特定命令和给定路径的文本文件。我想也许我可以创建一个文本文件(在代码中)将其文本设置为正确的命令并将其扩展名更改为 .lnk 我尝试先手动执行此操作,但未能这样做。

有没有办法做类似的事情(或者可能是另一种简单的方法)来创建 C# 中某个路径的快捷方式?

为了清楚起见,快捷方式是指指向文件的 .lnk 文件 编辑:文件是指我想要的任何文件,而不仅仅是我自己的应用程序的快捷方式


如果它不适用于每种情况,我将进行编辑。

添加这些参考:

  1. Microsoft Shell 控件和自动化
  2. Windows 脚本宿主对象模型

添加这个命名空间:

using Shell32;
using IWshRuntimeLibrary;

接下来似乎正在工作:

var wsh = new IWshShell_Class();
IWshRuntimeLibrary.IWshShortcut shortcut = wsh.CreateShortcut(
    Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\shorcut2.lnk") as IWshRuntimeLibrary.IWshShortcut;
shortcut.TargetPath = @"C:\Users\Zimin\Desktop\test folder";            
shortcut.Save();

希望对其他人也有帮助,感谢您的关注。

另外,如果有办法创建文件,编写正确的命令,然后将其更改为 lnk 文件,请告诉我。

4

1 回答 1

23

Joepro 在他们的回答中指出了一种方法:

您需要添加对 Windows 脚本宿主的 COM 引用。据我所知,没有本地 .net 方法可以做到这一点。

WshShellClass wsh = new WshShellClass();
IWshRuntimeLibrary.IWshShortcut shortcut = wsh.CreateShortcut(
    Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\shorcut.lnk") as IWshRuntimeLibrary.IWshShortcut;
shortcut.Arguments = "";
shortcut.TargetPath = "c:\\app\\myftp.exe";
// not sure about what this is for
shortcut.WindowStyle = 1; 
shortcut.Description = "my shortcut description";
shortcut.WorkingDirectory = "c:\\app";
shortcut.IconLocation = "specify icon location";
shortcut.Save();

对于 .Net 4.0 及更高版本,将第一行替换为以下内容:

 WshShell wsh = new WshShell();

编辑: 此链接也可以提供帮助

于 2013-08-02T19:10:30.853 回答