2009-08-12 3 views
1

Я хочу использовал питон, чтобы получить выполненную версию файла, и я знаю, что pefile.pyкак я могу использовал «pefile.py», чтобы получить файл (.exe) версию

как использовал его, чтобы сделать это?

Примечания: выполненный файл может быть не полностью.

+1

Это относится к StackOverflow – 2009-08-12 08:47:54

+2

Добро пожаловать в StackOverflow. Этот вопрос теперь стал обманом http://stackoverflow.com/questions/1264472/using-the-pefile-py-to-get-file-exe-version – innaM

ответ

2

Я не уверен, что я понимаю вашу проблему правильно, но если это что-то вдоль линий с помощью pefile, чтобы получить версию предоставленного исполняемого файла, а затем, возможно, (взято из [Обучающая программа] [1])

import pefile 
pe = pefile.PE("/path/to/pefile.exe") 
print pe.dump_info() 

предоставит вам информацию о версии. Я не знаю, насколько разумным pefile является парсинг неполных файлов, но предполагающий, что информация о версии находится где-то в заголовке, и что pefile использует генератор для чтения файла, тогда должно быть возможно прочитать информацию, если заголовок будет обрабатываться.

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] 

From Ero Carrera's (the author of pefile.py) own blog

+1

Я пробовал это в двоичном файле NSIS-Installer без успеха ('fileinfo.StringTable' не определен). [Я придумал решение] (http://stackoverflow.com/a/16076661/274483), используя атрибуты 'pe.VS_FIXEDFILEINFO.ProductVersionMS',' pe.VS_FIXEDFILEINFO.ProductVersionLS'. – flocki

Смежные вопросы