如何以编程方式跟随.lnk文件

我们有一个networking驱动器完整的指向文件夹的快捷方式(.lnk文件),我需要在C#Winforms应用程序中以编程方式遍历它们。

我有什么实用的select?

添加IWshRuntimeLibrary作为您的项目的参考。 添加引用,COM选项卡,Windows脚本宿主对象模型。

以下是我如何获得快捷方式的属性:

IWshRuntimeLibrary.IWshShell wsh = new IWshRuntimeLibrary.WshShellClass(); IWshRuntimeLibrary.IWshShortcut sc = (IWshRuntimeLibrary.IWshShortcut)wsh.CreateShortcut(filename); 

快捷方式对象“sc”具有TargetPath属性。

  1. 使用COM IPersistFile接口加载文件。
  2. 对结果执行QueryInterface以将其转换为IShellLink接口。
  3. 调用IShellLink :: GetPath

据我所知,你可以使用“添加引用”对话框的.NET生成类符合您的每个接口。

IShellLink接口可以让你操纵.lnk文件,尽管在C#中使用它有点麻烦。

这篇文章有一些代码实现必要的interop gubbins。

更新

你可以从这里的文章中找到代码,但是这个页面在Firefox中似乎不起作用。 它在IE中工作。

我知道这不是正确的方式,并且lnk文件结构可以改变等,但是这是我所做的:

  private static string LnkToFile(string fileLink) { string link = File.ReadAllText(fileLink); int i1 = link.IndexOf("DATA\0"); if (i1 < 0) return null; i1 += 5; int i2 = link.IndexOf("\0", i1); if (i2 < 0) return link.Substring(i1); else return link.Substring(i1, i2 - i1); }