创建文件快捷方式(.lnk)

时间:2013-08-02 18:03:46

标签: c# automation shortcut lnk

我一直在寻找一种在C#中创建文件快捷方式的简单方法,但我只找到了那样做的外部dll。 这实际上是相当令人惊讶的,没有内置的方法来做到这一点..

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

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

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


如果它不适合每种情况,我会编辑。

添加以下参考:

  1. Microsoft Shell控件和自动化
  2. Windows脚本宿主对象模型
  3. 添加此命名空间:

    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文件,请告诉我。

1 个答案:

答案 0 :(得分:15)

Joepro在their answer here中指出了一种方法:

  

您需要向Windows Scripting Host添加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();

修改 This link can help too