答案 0 :(得分:4)
这是我认为你能找到的最佳答案:
import pefile
pe = pefile.PE("/path/to/something.exe")
print hex(pe.VS_VERSIONINFO.Length)
print hex(pe.VS_VERSIONINFO.Type)
print hex(pe.VS_VERSIONINFO.ValueLength)
print hex(pe.VS_FIXEDFILEINFO.Signature)
print hex(pe.VS_FIXEDFILEINFO.FileFlags)
print hex(pe.VS_FIXEDFILEINFO.FileOS)
for fileinfo in pe.FileInfo:
if fileinfo.Key == 'StringFileInfo':
for st in fileinfo.StringTable:
for entry in st.entries.items():
print '%s: %s' % (entry[0], entry[1])
if fileinfo.Key == 'VarFileInfo':
for var in fileinfo.Var:
print '%s: %s' % var.entry.items()[0]
答案 1 :(得分:2)
我不确定我是否正确理解了你的问题,但如果它是使用pefile来检索所提供的可执行文件的版本,那么也许(取自[教程] [1])
import pefile
pe = pefile.PE("/path/to/pefile.exe")
print pe.dump_info()
将为您提供版本信息。我不知道在解析不完整的文件时pefile是多么明智,但猜测版本信息在标题中的某个位置并且pefile使用生成器来读取文件,那么如果标题是可解析的,则应该可以读取信息。