我想得到快捷方式的标题,不是文件名,不是描述,而是标题。 怎么弄明白?

我已经学会从这里解决目标路径,如何解决.lnk in c#

但我找不到任何方法来获得它的头衔。


(来源: ggpht.com


(来源: ggpht.com

有帮助吗?

解决方案 2

在快捷方式目录中有一个Desktop.ini隐藏文件,Desktop.ini文件记录快捷方式的显示字符串信息。

Desktop.ini文件示例:

 [LocalizedFileNames]
Windows Update.lnk=@%SystemRoot%\system32\wucltux.dll,-1
Default Programs.lnk=@%SystemRoot%\system32\sud.dll,-1

其他提示

听起来你可能正试图获得链接指向的文件的标题,正如JRL建议的那样。

如果您尝试这样做,我建议在十六进制编辑器中打开其中一个.lnk文件,例如 XVI32 。您可以从那里判断显示的中文名称是嵌入在.lnk文件中还是在其他地方。

如果它在其他地方,它可能是扩展文件属性。有一些源代码可能有助于检索该信息:扩展文件属性

如果有机会<。> 在.lnk文件中,我建议您查看 Windows快捷方式规范,以获取该数据位置的偏移信息等。

您可以在代码包的最新版本中使用属性系统API:

(系统中所有670多个属性都可以使用简单的属性访问器访问)

http://code.msdn.microsoft.com/WindowsAPICodePack

我知道您目前的需求只是lnk文件的有限标题。使用上面的库,示例代码可能如下所示:

ShellLink myLink = ShellObject.FromParsingName(&quot; c:\ somepath \ myLink.lnk&quot;);

string title = myLink.Properties.System.Title.Value;

//这就是它指向...... string target = myLink.Properties.System.TargetParsingPath.Value;

请定义“标题”。声音相关的唯一属性是快捷方式的文件名,目标的文件名和.lnk文件的描述数据。

假设你指的是链接指向的文件的标题,而不是链接本身,以及你在谈论Windows,那么它是通过NTFS中的一个功能,替代流完成的。您可以使用此文章中的代码访问这些流

展望创建快捷方式,看起来有很多关于脚本对象的跳跃。但我错过了什么吗?如果您有快捷方式的路径,则名称应该与路径中的名称完全相同,而不是您必须查找的某个属性。

    Dim f As FileInfo = New FileInfo("C:\Name of shortcut.lnk")
    Dim title As String = f.Name.Replace(".lnk", String.Empty)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top