代码之家  ›  专栏  ›  技术社区  ›  MPelletier

读取lnk文件的一般方法

  •  3
  • MPelletier  · 技术社区  · 14 年前

    一些框架和语言似乎有lnk文件解析器(C#,Java,Python,当然还有无数其他的),以获得它们的目标、属性等。如果我想用另一种没有上述功能的语言解析lnk文件,我想知道读取lnk文件的一般方法是什么。有Windows API吗?

    5 回复  |  直到 14 年前
        1
  •  3
  •   Giorgi    14 年前
        2
  •  2
  •   Eric    8 年前

    这是一篇老文章,但这里是我的lnk处理的C实现,它处理整个规范

    https://github.com/EricZimmerman/Lnk

    更多信息和命令行工具在这里

    http://binaryforay.blogspot.com/2016/02/introducing-lecmd.html

        3
  •  1
  •   MUY Belgium    10 年前

    只需使用lnk文件解析器 .

    参见第页的lnk-parse-1.0.pl http://jafat.sourceforge.net

    似乎没有依赖。语法很简单,链接文件在标准输出中变成一个简单的文本,可以在Linux上使用。

        4
  •  0
  •   kebs    13 年前

    @乔治:实际上,在那里 http://msdn.microsoft.com/en-us/library/dd871305%28PROT.10%29.aspx

    但这真的令人惊讶吗?

    一旦你得到了文件格式,写代码读起来应该不会太难。

        5
  •  0
  •   ZJR    13 年前

    WSH相关组件 .lnk 后XP windows系统中大多数语言的文件。您只需要访问COM环境并实例化 WScript.Shell 组件(记住,在赢的时候,提到 贝壳 通常指 explorer.exe

    例如,下面的代码片段在PHP上执行以下操作:

    <?php
    $wsh=new COM('WScript.Shell'); // the wsh object
    
    // please note $wsh->CreateShortcut method actually
    // DOES THE READING, if the file already exists. 
    $lnk=$wsh->CreateShortcut('./Shortcut.lnk');
    echo $lnk->TargetPath,"\n";
    

    相反,另一个对VBScript执行相同的操作:

    set sh = WScript.CreateObject("WScript.Shell")
    set lnk = sh.CreateShortcut("./Shortcut.lnk")
    MsgBox lnk.TargetPath
    

    用VB/VBS编写 以某种形式支持COM和WSH交互的所有语言。

    This simple tutorial 可能很方便,因为它列出并举例说明了 lnk先生 除最重要的文件外的其他文件: TargetPath

    • WindowStyle
    • Hotkey ,
    • IconLocation ,
    • Description
    • WorkingDirectory