한국어
파이썬
 

EXE 파일을 파싱해주는 pefile 모듈을 이용한 방법: http://code.google.com/p/pefile/

다음 코드와 같이 구현할 수 있다.

import pefile

 pe = pefile.PE(r'C:Windowsnotepad.exe')
 FileVersion    = pe.FileInfo[0].StringTable[0].entries['FileVersion']
 ProductVersion = pe.FileInfo[0].StringTable[0].entries['ProductVersion']



exe파일에는 FileVersion및ProductVersion값이 32비트 정수로 저장되어 있는데 이것은 각각 두개의 16비트 정수로 나뉜다.

pefile을 이용하여 이 정보를 얻는 방법은 다음과 같다.

pe = pefile.PE(r'C:Windowsnotepad.exe')
 FileVersionLS    = pe.VS_FIXEDFILEINFO.FileVersionLS
 FileVersionMS    = pe.VS_FIXEDFILEINFO.FileVersionMS
 ProductVersionLS = pe.VS_FIXEDFILEINFO.ProductVersionLS
 ProductVersionMS = pe.VS_FIXEDFILEINFO.ProductVersionMS

 FileVersion = (FileVersionMS >> 16, FileVersionMS & 0xFFFF, FileVersionLS >> 16, FileVersionLS & 0xFFFF)
 ProductVersion = (ProductVersionMS >> 16, ProductVersionMS & 0xFFFF, ProductVersionLS >> 16, ProductVersionLS & 0xFFFF)

 print 'File version:    %s.%s.%s.%s' % FileVersion 
 print 'Product version: %s.%s.%s.%s' % ProductVersion


또한 win32api 모듈을 이용할 수 도있다. http://sourceforge.net/projects/pywin32/

from win32api import GetFileVersionInfo, LOWORD, HIWORD

 def get_version_number (filename):
   info = GetFileVersionInfo (filename, "\")
   ms = info['FileVersionMS']
   ls = info['FileVersionLS']
   return HIWORD (ms), LOWORD (ms), HIWORD (ls), LOWORD (ls)

이 글과 연관된 다른 글
  1. [2015/07/09] c/c++문자열, 유니코드 관련 함수 by makersweb (4167)
번호 제목 글쓴이 날짜 조회 수
23 Qt For Python(PySide2) QML 프로젝트 예제 file makersweb 2019.10.17 123
22 명령어 한줄로 내컴퓨터를 웹서버로 file 운영자 2019.01.25 410
21 pydbus 바인딩을 이용하여 서비스 데몬과 D-Bus통신 file makersweb 2018.03.12 388
20 Boost Python을 이용하여 python을 위한 C++ API 바인딩 [5] file makersweb 2017.01.08 4462
» [Python]EXE또는 DLL파일의 버전정보를 알아내기위한 몇가지 방법 makersweb 2015.06.25 3607
18 QML 및 Window 투명처리 file makersweb 2015.04.22 2586
17 [pyqt4]QTimer 예제 - 버튼을 누르면 3초후 함수 또는 메소드 호출 makersweb 2015.04.01 7356
16 Python + QML with PyQt4 makersweb 2015.03.24 4014
15 print를 로그파일로 생성하기 (log출력 Redirection) makersweb 2015.03.18 3782
14 외부 프로그램 실행 pjk 2015.02.10 5742
13 우분투에 Python새 버전 설치 사용법 pjk 2015.02.10 2476
12 How to Use Freeze pjk 2014.09.06 3961
11 [PyQt4]개발 프로그램 버전표시 메세지 박스 pjk 2014.09.02 5714
10 [PyQt4]여러가지 버튼 예제 file pjk 2014.08.29 10551
9 Python 문자열 관련 함수 레퍼런스 pjk 2014.08.29 5432
8 [PyQt4]스레드 및 ProgressBar 예제 코드 file pjk 2014.08.26 5975
7 [PyQt4]multiprocess 예제 코드 pjk 2014.08.26 6745
6 [PyQt4]마우스 클릭 이벤트 예제 코드 pjk 2014.08.26 5834
5 [PyQt4]폴더 또는 파일을 드레그하여 그 경로를 LineEdit로 가져오기 file pjk 2014.08.22 6010
4 다른 디렉터리의 파일(모듈) import 하기 pjk 2014.08.22 4493