我是靠谱客的博主 超级白猫,最近开发中收集的这篇文章主要介绍python打开快捷方式_python怎么通过快捷方式访问到实际的target路径?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

归根结底,快捷方式只是一个二进制文件,你直接用打开文件的方式,读取你需要的信息即可,请看这篇文章:Windows快捷方式文件格式详解(附代码) - 淡泊明志,宁静致远 - ITeye博客

用二进制方式获取:

import struct

def get_lnk_file(path):

target = ''

with open(path, 'rb') as stream:

content = stream.read()

# skip first 20 bytes (HeaderSize and LinkCLSID)

# read the LinkFlags structure (4 bytes)

lflags = struct.unpack('I', content[0x14:0x18])[0]

position = 0x18

# if the HasLinkTargetIDList bit is set then skip the stored IDList

# structure and header

if (lflags & 0x01) == 1:

position = struct.unpack('H', content[0x4C:0x4E])[0] + 0x4E

last_pos = position

position += 0x04

# get how long the file information is (LinkInfoSize)

length = struct.unpack('I', content[last_pos:position])[0]

# skip 12 bytes (LinkInfoHeaderSize, LinkInfoFlags, and VolumeIDOffset)

position += 0x0C

# go to the LocalBasePath position

lbpos = struct.unpack('I', content[position:position+0x04])[0]

position = last_pos + lbpos

# read the string at the given position of the determined length

size= (length + last_pos) - position - 0x02

temp = struct.unpack('c' * size, content[position:position+size])

target = ''.join([chr(ord(a)) for a in temp])

return target

print(get_lnk_file("d:/demo.lnk"))

当然,也可以通过调windows的api获取文件属性信息。

import sys

import win32com.client

shell = win32com.client.Dispatch("WScript.Shell")

shortcut = shell.CreateShortCut("d:\demo.lnk")

print(shortcut.Targetpath)

以上代码在python3.6下调试通过

最后

以上就是超级白猫为你收集整理的python打开快捷方式_python怎么通过快捷方式访问到实际的target路径?的全部内容,希望文章能够帮你解决python打开快捷方式_python怎么通过快捷方式访问到实际的target路径?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部