我正在尝试使用Go读取快捷方式(.lnk)文件的目标文件/目录。
我已经有了一个目录中所有文件的循环,我可以成功识别它是IsDir()
的目录,还是文件IsRegular()
。现在我需要一种方法来读取它是否是一个链接,如果它是.lnk
,它的路径,所以我可以打印它。
我找不到任何办法这样做,我一直在搜索,但没有任何结果。有什么想法吗?
答案 0 :(得分:4)
您需要阅读lnk binary format as defined by Microsoft
在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
}
该项目应该让您了解如何解码快捷方式目标。