如何在vb.net中找到.lnk文件的目标

如何在vb.net中找到.lnk文件的目标,vb.net,file,lnk,Vb.net,File,Lnk,我制作了一个explorer.exe克隆,带有树视图和列表视图等 现在我需要处理单击.lnk文件的操作,因此我需要.lnk文件的目标路径。我会尝试 Public Shared Function GetLnkTarget(lnkPath As String) As String Dim shl = New Shell32.Shell() ' Move this to class scope lnkPath = System.IO.Path.GetFullPath(lnkPa

我制作了一个explorer.exe克隆,带有树视图和列表视图等

现在我需要处理单击.lnk文件的操作,因此我需要.lnk文件的目标路径。

我会尝试

Public Shared Function GetLnkTarget(lnkPath As String) As String
    Dim shl = New Shell32.Shell()
    ' Move this to class scope
    lnkPath = System.IO.Path.GetFullPath(lnkPath)
    Dim dir = shl.[NameSpace](System.IO.Path.GetDirectoryName(lnkPath))
    Dim itm = dir.Items().Item(System.IO.Path.GetFileName(lnkPath))
    Dim lnk = DirectCast(itm.GetLink, Shell32.ShellLinkObject)
    Return lnk.Target.Path
End Function
您需要引用COM对象;Microsoft Shell控件和自动化。

您可以使用:

只要您希望在本地运行程序、操作注册表内容、创建快捷方式或访问系统文件夹,就可以创建WshShell对象

并使用其方法:

创建新快捷方式,或打开现有快捷方式

结果对象包含一个属性,这就是您要查找的属性

例如:

Dim shell = CreateObject("WScript.Shell")
Dim path  = shell.CreateShortcut(path_to_your_link).TargetPath

大家好,欢迎来到社区!请提供一些代码。如果你不这么做的话,这里的人很快就会变得很邪恶。你已经试过什么了?可能再次重复,不是离题,也不是一个坏问题。这是更好的答案