微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我有什么实用的select?

如何以编程方式检测是否在Windows桌面应用程序中启用/禁用了JavaScript? (Webbrowser控件)

“这个文件来自另一台计算机,可能被阻止,以保护这台计算机。” – 如何以编程方式在C#.net中删除属性

运行后如何隐藏WinForm?

如何查看exe的SmartScreen声誉得分?

函数包装到Windows桌面应用程序的最佳做法是什么?

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

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

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

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

使用COM IPersistFile接口加载文件

对结果执行QueryInterface以将其转换为IShellLink接口。

调用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"); if (i1 < 0) return null; i1 += 5; int i2 = link.IndexOf("",i1); if (i2 < 0) return link.Substring(i1); else return link.Substring(i1,i2 - i1); }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐