4
我正在尝试使用Go阅读目标快捷方式(.lnk)文件的文件/目录。使用Go阅读快捷方式的目标
我已经有一个目录中的所有文件的循环,我可以成功识别它是否是IsDir()
的目录,或者它是否是文件IsRegular()
。现在我需要一种方法来阅读它是否是一个链接,如果它是一个.lnk
,它的路径,我可以打印它。
我找不到这样做的任何方式,我一直在搜索,但没有出现。任何想法?
我正在尝试使用Go阅读目标快捷方式(.lnk)文件的文件/目录。使用Go阅读快捷方式的目标
我已经有一个目录中的所有文件的循环,我可以成功识别它是否是IsDir()
的目录,或者它是否是文件IsRegular()
。现在我需要一种方法来阅读它是否是一个链接,如果它是一个.lnk
,它的路径,我可以打印它。
我找不到这样做的任何方式,我一直在搜索,但没有出现。任何想法?
你需要阅读lnk binary format as defined by Microsoft
在围棋,其结构将转化
//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
}
(如exponential-decay/shortcuts
使用)这个项目应该给你一个想法,如何快捷方式目标解码。
[os.Readlink(path)](https://golang.org/pkg/os/#Readlink)在Windows上不起作用吗? – jrefior
@jrefior对于符号链接('mklink'或者可能连接:'mklink/J'),如https://github.com/golang/go/issues/15978所示。不适用于“快捷方式”('lnk') – VonC
@VonC你能写一个关于如何获得这些信息的小例子吗?我很迷茫与这一个:( – CoppolaEmilio