使用 Go 读取快捷方式的目标



我正在尝试使用 Go 读取快捷方式 (.lnk( 文件的目标文件/目录。

我已经为目录中的所有文件设置了一个循环,我可以成功识别它是带有IsDir()的目录还是文件IsRegular()。现在我需要一种方法来读取它是否是一个链接,如果它是一个.lnk,它的路径,以便我可以打印它。

我找不到任何方法可以做到这一点,我一直在搜索SO,但没有任何结果。知道吗?

您需要读取 Microsoft 定义的 lnk 二进制格式

在 Go 中,它的结构将转换为(如exponential-decay/shortcuts中使用的(

//structs that make up the shortcut specification [76 bytes] 
type ShellLinkHeader struct {
   HeaderSize  [4]byte           //HeaderSize
   ClassID     [16]byte          //LinkCLSID
   LinkFlags   uint32            //LinkFlags      [4]byte
   FileAttr    uint32            //FileAttributes [4]byte
   Creation    [8]byte           //CreationTime
   Access      [8]byte           //AccessTime
   Write       [8]byte           //WriteTime
   FileSz      [4]byte           //FileSize
   IconIndex   [4]byte           //IconIndex
   ShowCmd     [4]byte           //ShowCommand
   //[2]byte HotKey values for shortcut shortcuts
   HotKeyLow   byte              //HotKeyLow
   HotKeyHigh  byte              //HotKeyHigh
   Reserved1   [2]byte           //Reserved1
   Reserved2   [4]byte           //Reserved2
   Reserved3   [4]byte           //Reserved3
}

该项目应该让您了解如何解码快捷方式目标。

相关内容

  • 没有找到相关文章

最新更新