鱼C论坛

 找回密码
 立即注册
查看: 2468|回复: 0

[技术交流] 【学习笔记】查看PE版本

[复制链接]
发表于 2012-7-26 22:43:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
查看PE版本.asm
==============================================================
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .386
  .model flat, stdcall
  option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include  windows.inc
include  user32.inc
includelib user32.lib
include  kernel32.inc
includelib kernel32.lib
include  Version.inc
includelib Version.lib
include  comctl32.inc
includelib comctl32.lib
include  comdlg32.inc
includelib comdlg32.lib
include  查看PE版本.inc
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN equ 1000h
DLG_MAIN equ 1
IDC_INFO equ 101
IDC_FILE equ 102
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .data?

hInstance dd ?
szBuffer db 4096 dup (?)

  .const
szPeFileExt db 'PE文件',0,'*.exe;*.dll;*.scr;*.drv',0,'所有文件',0,'*.*',0,0
szError  db '文件中没有包含版本信息!',0
szQuit  db '是否退出!',0
szOpen  db '打开',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .code


;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParam
  local @szBuffer[MAX_PATH]:byte
  local @stOpenFileName:OPENFILENAME

  mov eax,wMsg
  .if eax == WM_CLOSE
   invoke EndDialog,hWnd,NULL
  .elseif eax == WM_INITDIALOG
;******************************************************************************************************************************************************************************
; 设置标题栏图标
;******************************************************************************************************************************************************************************
   invoke LoadIcon,hInstance,ICO_MAIN
   invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eax
;******************************************************************************************************************************************************************************
  .elseif eax == WM_COMMAND
   mov eax,wParam
   .if ax == IDOK
;******************************************************************************************************************************************************************************
; 打开一个选择文件的对话框
;******************************************************************************************************************************************************************************
    invoke RtlZeroMemory,addr @stOpenFileName,sizeof OPENFILENAME  ;结构体填充为0
    invoke RtlZeroMemory,addr @szBuffer,sizeof @szBuffer   ;缓冲区填充为0
    mov @stOpenFileName.lStructSize,SIZEOF @stOpenFileName   ;结构体大小放置进去
    mov @stOpenFileName.Flags,OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST
     ;OFN_PATHMUSTEXIST :必须输入存在的路径名,否则弹出警告框
     ;OFN_FILEMUSTEXIST :必须输入存在的文件名,否则弹出警告框,并且自动设置OFN_PATHMUSTEXIST激活标志
    push hWnd
    pop @stOpenFileName.hwndOwner     ;所属的父窗口句柄
    mov @stOpenFileName.lpstrFilter,offset szPeFileExt    ;过滤器【过滤后缀名】
    lea eax,@szBuffer
    mov @stOpenFileName.lpstrFile,eax     ;结构体调用后将填充为全路径文件名
    mov @stOpenFileName.nMaxFile,MAX_PATH
    mov @stOpenFileName.lpstrTitle,offset szOpen    ;【打开】标题
    invoke GetOpenFileName,addr @stOpenFileName    ;调用打开文件函数
    .if eax
;******************************************************************************************************************************************************************************
; 获取版本信息并显示出来
;******************************************************************************************************************************************************************************
     invoke _GetVersionInfo,addr @szBuffer,addr szBuffer
     ;@szBuffer :返回的文件全路径
     ;szBuffer  :4KB的缓冲区
     .if eax
      invoke SetDlgItemText,hWnd,IDC_FILE,addr @szBuffer  ;文件全路径在左下角显示
      invoke SetDlgItemText,hWnd,IDC_INFO,addr szBuffer  ;将信息全部写入到编辑框
     .else
      invoke MessageBox,hWnd,addr szError,NULL,MB_OK or MB_ICONHAND
     .endif
    .endif
   .endif
;******************************************************************************************************************************************************************************
  .else
   mov eax,FALSE
   ret
  .endif
  mov eax,TRUE
  ret

_ProcDlgMain endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
  invoke InitCommonControls
  invoke GetModuleHandle,NULL
  mov hInstance,eax
  invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL
  invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  end start


查看PE版本.inc
===============================================================
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .const

szRoot  db '\',0
szVarInfo  db '\VarFileInfo\Translation',0
szStrInfoFmt db '\StringFileInfo\%08x\',0
szArrow  db ' ',0
szReturn  db 0dh,0ah,0
szXt  db '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>',0
szFixFileInfo db '固定版本信息属性:',0dh,0ah
  db '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
  db 0dh,0ah
  db '文件版本:  %d.%d.%d.%d',0dh,0ah
  db '产品版本:  %d.%d.%d.%d',0dh,0ah
  db '适用系统:  %08x',0dh,0ah
  db '文件类型:  %08x',0dh,0ah
  db '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>',0dh,0ah
  db '字符串版本属性:',0dh,0ah
  db '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
szStr1  db 'LegalCopyright',0
szStr2  db 'Comments',0  
szStr3  db 'CompanyName',0
szStr4  db 'FileDescription',0
szStr5  db 'FileVersion',0
szStr6  db 'InternalName',0
szStr7  db 'ProductName',0
szStr8  db 'LegalTrademarks',0
szStr9  db 'OriginalFilename',0
szStr10  db 'ProductVersion',0
szStr11  db 'SpecialBuild',0
szStr12  db 'PrivateBuild',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
szStr1c  db '版权:  ',0
szStr2c  db '备注:  ',0
szStr3c  db '公司:  ',0
szStr4c  db '描述:  ',0
szStr5c  db '文件版本: ',0
szStr6c  db '内部名称: ',0
szStr7c  db '产品名称: ',0
szStr8c  db '合法商标: ',0
szStr9c  db '源文件名: ',0
szStr10c  db '产品版本 : ',0
szStr11c  db '特殊内部版本说明: ',0
szStr12c  db '个人用内部版本说明:',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
lpStr1  dd szStr1
lpStr2  dd szStr2
lpStr3  dd szStr3
lpStr4  dd szStr4
lpStr5  dd szStr5
lpStr6  dd szStr6
lpStr7  dd szStr7
lpStr8  dd szStr8
lpStr9  dd szStr9
lpStr10  dd szStr10
lpStr11  dd szStr11
lpStr12  dd szStr12
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
lpStr1c  dd szStr1c
lpStr2c  dd szStr2c
lpStr3c  dd szStr3c
lpStr4c  dd szStr4c
lpStr5c  dd szStr5c
lpStr6c  dd szStr6c
lpStr7c  dd szStr7c
lpStr8c  dd szStr8c
lpStr9c  dd szStr9c
lpStr10c  dd szStr10c
lpStr11c  dd szStr11c
lpStr12c  dd szStr12c
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 获取文件版本信息
; 入口参数:文件名,返回信息缓冲区
; 返回参数:TRUE = 成功,FALSE = 失败
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_GetVersionInfo proc _lpFileName,_lpBuffer
  local @dbVerInfo[4096]:byte        ;存储返回的版本信息
  local @szStringInfo[128]:byte        ;存储【\StringFileInfo\080404b0\】
  local @szString[128]:byte        ;存储【\StringFileInfo\080404b0\字符串】
  local @lpBuffer,@dwLen        ;存储VerQueryValue函数返回的明码
  local @dwVer1,@dwVer2,@dwVer3,@dwVer4,@dwVer5,@dwVer6,@dwVer7,@dwVer8  

  pushad
  invoke GetFileVersionInfoSize,_lpFileName,NULL      ;获取文件版本信息大小,顺便判断是否有版本信息
   ;lptsrFilename :指向含有文件名的缓冲区
   ;lpdwHandle :指向一个DWORD类型的变量,函数将把该函数设为0
  .if !eax          ;如果为真则为假,如果为假则为真。【真为非0,假为0】
   popad
   xor eax,eax         ;异或,两数相同置0
   ret
  .endif
  invoke GetFileVersionInfo,_lpFileName,NULL,sizeof @dbVerInfo,addr @dbVerInfo   ;获取版本信息
   ;lptsrFilename :指向含有文件名的缓冲区
   ;dwHandle :标识文件版本信息.函数GetFileVersionInfoSize返回这个句柄——好像不需要这个参数、、、
   ;dwLen  :指定lpdata所标识的缓冲区的大小,函数GetFileVersionInfoSize返回存放文件版本信息所需缓冲区大小,如果缓冲区不够大,则文件版本信息被截断成缓冲区的大小
   ;lpData  :指向包含文件版本信息的缓冲区.文件版本总为Unicode格式
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 获取固定属性
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  invoke VerQueryValue,addr @dbVerInfo,addr szRoot,addr @lpBuffer,addr @dwLen
   ;pBlock  :指向含有函数GetFileVersionInfo返回的版本信息资源的缓存区
   ;lpSubBlock :指向一个以NULL结束的字符串,它表明要获取哪个版本信息值
   ;【\】  :指明根块,函数获取版本信息资源结构的VS_FIXEDFILEINFO指针
   ;【\VarFileInfo\Translation】
   ;指明变量信息块中的转换表,函数获取语言和字符串集标识符数组的指针,应用程序用这些标识符在版本信息资源中创建特定语言块的名称
   ;【\StringFileInfo\语言字符集\串名】
   ;指明特定语言块中的一个值,语言字符集是在资源的转换表中可以找到的一个语言字符集标识符对,它必须指定成十六进制的串,串名是下面的部分所描述的预定以字符串之一
   ;Comments  备注
   ;CompanyName  公司
   ;FileDescription  描述
   ;FileVersion  文件版本
   ;InternalName  内部名称
   ;LegalCopyright  版权
   ;LegalTrademarks  合法商标
   ;OriginalFilename  源文件名
   ;PrivateBuild  个人用内部版本说明
   ;ProductName  产品名称
   ;ProductVersion  产品版本
   ;SpecialBuild  特殊内部版本说明
  mov esi,@lpBuffer
  assume esi:ptr VS_FIXEDFILEINFO        ;将esi中的数据按照VS_FIXEDFILEINFO结构体分割
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 计算版本号
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  mov eax,[esi].dwFileVersionMS        ;2个16位是结构体成员,分MS和LS
  movzx ecx,ax          ;将低16位扩充32位放入ecx
  mov @dwVer2,ecx         ;将ecx存放入@dwVer2
  shr eax,16          ;将高16位移至低16位,高16位清零
  mov @dwVer1,eax         ;将eax存放入@dwVer1

  mov eax,[esi].dwFileVersionLS
  movzx ecx,ax
  mov @dwVer4,ecx
  shr eax,16
  mov @dwVer3,eax

  mov eax,[esi].dwProductVersionMS
  movzx ecx,ax
  mov @dwVer6,ecx
  shr eax,16
  mov @dwVer5,eax

  mov eax,[esi].dwProductVersionLS
  movzx ecx,ax
  mov @dwVer8,ecx
  shr eax,16
  mov @dwVer7,eax
  invoke wsprintf,_lpBuffer,addr szFixFileInfo,@dwVer1,@dwVer2,@dwVer3,@dwVer4,\
   @dwVer5,@dwVer6,@dwVer7,@dwVer8,[esi].dwFileOS,[esi].dwFileType
  assume esi:nothing
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 获取语言集
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  invoke VerQueryValue,addr @dbVerInfo,addr szVarInfo,addr @lpBuffer,addr @dwLen  ;取得\VarFileInfo\Translation中的值
   ;BEGIN          ;取得VALUE  "Translation", 0x804, 0x4b0中的【0x804, 0x4b0】反的
   ; BLOCK "VarFileInfo"
   ; BEGIN
   ;          VALUE "Translation", 0x804, 0x4b0
   ; END
   ; BLOCK "StringFileInfo"
   ; BEGIN
   ;  BLOCK "080404b0"
   ;  BEGIN
   ;   VALUE "Comments", "自学Win32汇编\0"
   ;   VALUE "CompanyName", "个人版本\0"
   ;   VALUE "FileDescription", "查看PE版本\0"
   ;           VALUE "FileVersion",  "2, 0, 1, 2\0"
   ;           VALUE "InternalName", "查看PE版本\0"
   ;            VALUE "LegalCopyright", "Xingdiy\0"
   ;           VALUE "LegalTrademarks", "查看PE版本\0"
   ;            VALUE "OriginalFilename", "PeVersion.exe\0"
   ;            VALUE "PrivateBuild", "查看PE版本\0"
   ;           VALUE "ProductName", "查看PE版本\0"
   ;           VALUE "ProductVersion", "2, 0, 1, 2\0"
   ;           VALUE "SpecialBuild", "查看PE版本\0"
   ;      END
   ; END
   ;END
  mov eax,@lpBuffer         ;@lpBuffer中存储的是【0x804, 0x4b0】反的
  mov eax,[eax]          ;将字符串赋值给eax
  ror eax,16          ;由于高低16位是反的,所以ror调换
  invoke wsprintf,addr @szStringInfo,addr szStrInfoFmt,eax
  invoke lstrcat,_lpBuffer,addr szReturn
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 获取字符串版本信息
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  mov ebx,offset lpStr1         ;取得lpStr1的地址。注意:不是内存空间的字符串
  mov edi,offset lpStr1c
  .while ebx <= offset lpStr12        ;while循环,直到等于lpStr12的地址退出
   invoke lstrcpy,addr @szString,addr @szStringInfo     ;将@szStringInfo字符串【\StringFileInfo\080404b0\】复制到@szString
   mov eax,[ebx]         ;将ebx中的字符串地址放入eax
   invoke lstrcat,addr @szString,eax       ;将字符串版本信息附加到【\StringFileInfo\080404b0\】后
   mov eax,[edi]         ;将ebx中的字符串地址放入eax
   invoke lstrcat,_lpBuffer,eax       ;附加在缓冲区地址
   invoke lstrcat,_lpBuffer,addr szArrow      ;加上TAB制表键
   invoke VerQueryValue,addr @dbVerInfo,addr @szString,addr @lpBuffer,addr @dwLen ;解码并放入@lpBuffer缓冲区
   .if eax         ;执行成功
    invoke lstrcat,_lpBuffer,@lpBuffer      ;附加获得的版本信息
   .endif
   invoke lstrcat,_lpBuffer,addr szReturn      ;附加回车和换行
   add ebx,4         ;指向下一个字符串版本信息地址
   add edi,4         ;指向下一个中文字符串信息地址
  .endw
  invoke lstrcat,_lpBuffer,addr szXt        ;加上线条
  popad
  mov eax,TRUE
  ret

_GetVersionInfo endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>




查看PE版本.RC
================================================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#include  <resource.h>
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define  ICO_MAIN  0x1000 //图标
#define  DLG_MAIN  1
#define  IDC_INFO   101
#define  IDC_FILE   102
#define  VS_VERSION_INFO  1
#define  VS_USER_DEFINED  100
#define  VS_FFI_SIGNATURE  0x0FEEF04BD
#define  VS_FFI_STRUCVERSION 0x10000
#define  VS_FFI_FILEFLAGSMASK 0x3F
#define  VS_FF_DEBUG  1
#define  VS_FF_PRERELEASE  2
#define  VS_FF_PATCHED  4
#define  VS_FF_PRIVATEBUILD 8
#define  VS_FF_INFOINFERRED 0x10
#define  VS_FF_SPECIALBUILD 0x20
#define  VOS_UNKNOWN  0
#define  VOS_DOS  0x10000
#define  VOS_OS216  0x20000
#define  VOS_OS232  0x30000
#define  VOS_NT   0x40000
#define  VOS_BASE  0
#define  VOS_WINDOWS16  1
#define  VOS_PM16  2
#define  VOS_PM32  3
#define  VOS_WINDOWS32  4
#define  VOS_DOS_WINDOWS16 0x10001
#define  VOS_DOS_WINDOWS32 0x10004
#define  VOS_OS216_PM16  0x20002
#define  VOS_OS232_PM32  0x30003
#define  VOS_NT_WINDOWS32 0x40004
#define  VFT_UNKNOWN  0
#define  VFT_APP   1
#define  VFT_DLL   2
#define  VFT_DRV   3
#define  VFT_FONT  4
#define  VFT_VXD   5
#define  VFT_STATIC_LIB  7
#define  VFT2_UNKNOWN  0
#define  VFT2_DRV_PRINTER 1
#define  VFT2_DRV_KEYBOARD 2
#define  VFT2_DRV_LANGUAGE 3
#define  VFT2_DRV_DISPLAY 4
#define  VFT2_DRV_MOUSE  5
#define  VFT2_DRV_NETWORK 6
#define  VFT2_DRV_SYSTEM  7
#define  VFT2_DRV_INSTALLABLE 8
#define  VFT2_DRV_SOUND  9
#define  VFT2_DRV_COMM  0x0A
#define  VFT2_DRV_INPUTMETHOD 0x0B
#define  VFT2_FONT_RASTER 1
#define  VFT2_FONT_VECTOR 2
#define  VFT2_FONT_TRUETYPE 3
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN ICON   "Main.ico"
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DLG_MAIN DIALOG 138, 123, 231, 139
STYLE  DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION  "查看PE文件版本信息"
FONT  9, "微软雅黑"
{
EDITTEXT IDC_INFO, 5, 5, 220, 110, ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | WS_BORDER | WS_VSCROLL | WS_TABSTOP
LTEXT  "文件:", -1, 5, 123, 165, 8
  LTEXT  " ", IDC_FILE, 25, 123, 165, 8
DEFPUSHBUTTON "选择文件(&B)", IDOK, 175, 120, 50, 14
}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1  VERSIONINFO
FILEVERSION 2,0,1,2
PRODUCTVERSION  2,0,1,2
FILEOS  VOS_WINDOWS32
FILETYPE  VFT_APP
FILESUBTYPE VFT2_UNKNOWN
BEGIN
BLOCK "VarFileInfo"
BEGIN
          VALUE "Translation", 0x804, 0x4b0
END
BLOCK "StringFileInfo"
BEGIN
  BLOCK "080404b0"
  BEGIN
   VALUE "Comments", "自学Win32汇编\0"
   VALUE "CompanyName", "个人版本\0"
   VALUE "FileDescription", "查看PE版本\0"
           VALUE "FileVersion",  "2, 0, 1, 2\0"
           VALUE "InternalName", "查看PE版本\0"
            VALUE "LegalCopyright", "Xingdiy\0"
           VALUE "LegalTrademarks", "查看PE版本\0"
            VALUE "OriginalFilename", "PeVersion.exe\0"
            VALUE "PrivateBuild", "查看PE版本\0"
           VALUE "ProductName", "查看PE版本\0"
           VALUE "ProductVersion", "2, 0, 1, 2\0"
           VALUE "SpecialBuild", "查看PE版本\0"
      END
END
END
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-8 06:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表