回到.NET 1.0天,我写了一个方法来返回MS Windows上快捷方式的目标。它通过使用Windows脚本托管对象模型的互操作和强制通过COM接口实现这一点:
private FileInfo GetFileFromShortcut(FileInfo shortcut)
{
FileInfo targetFile = null;
try
{
IWshRuntimeLibrary.WshShell wShell = new IWshRuntimeLibrary.WshShellClass();
IWshRuntimeLibrary.WshShortcut wShortcut = (IWshRuntimeLibrary.WshShortcut)wShell.CreateShortcut(shortcut.FullName);
// if the file wasn't a shortcut then the TargetPath comes back empty
string targetName = wShortcut.TargetPath;
if (targetName.Length > 0)
{
targetFile = new FileInfo(targetName);
}
}
catch (Exception)
{ // will return a null targetFile if anything goes wrong
}
return targetFile;
}
这仍然让我感到困扰,我希望用更优雅的东西取代它,但前提是替换实际上至少也是如此。我仍然找不到寻找快捷方式目标的本地C#方式。有没有,或者这仍然是做这种事情的最佳方式?
答案 0 :(得分:1)
看起来有人编写了一个类来操作C#中名为ShellLink的快捷方式文件,但它也使用了COM。
答案 1 :(得分:1)
你不能只打开.lnk或.url文件并解析它吗?
这谈到同样的事情,并显示文件的样子: http://www.programmingtalk.com/showthread.php?t=7335
答案 2 :(得分:0)
我刚才对此感兴趣。
以下是已接受的response,其中包含指向(非正式)description of the format LNK文件的链接。显然,所有可用的方法尚未通过一些API。