获取windows可执行文件的version信息(版本号)

之前在msdn上Version Information看到文件版本信息的介绍,看着整体比较复杂,就一直没做。现在需要获取ocx文件的版本号,所以查找了下相关资料,比较有用的就是VS_FIXEDFILEINFO结构,获取这个参数就基本可以完成任务了。

代码如下:

 1 //typedef struct tagVS_FIXEDFILEINFO
 2 //{
 3 //    DWORD   dwSignature;            /* e.g. 0xfeef04bd */
 4 //    DWORD   dwStrucVersion;         /* e.g. 0x00000042 = "0.42" */
 5 //    DWORD   dwFileVersionMS;        /* e.g. 0x00030075 = "3.75" */
 6 //    DWORD   dwFileVersionLS;        /* e.g. 0x00000031 = "0.31" */
 7 //    DWORD   dwProductVersionMS;     /* e.g. 0x00030010 = "3.10" */
 8 //    DWORD   dwProductVersionLS;     /* e.g. 0x00000031 = "0.31" */
 9 //    DWORD   dwFileFlagsMask;        /* = 0x3F for version "0.42" */
10 //    DWORD   dwFileFlags;            /* e.g. VFF_DEBUG | VFF_PRERELEASE */
11 //    DWORD   dwFileOS;               /* e.g. VOS_DOS_WINDOWS16 */
12 //    DWORD   dwFileType;             /* e.g. VFT_DRIVER */
13 //    DWORD   dwFileSubtype;          /* e.g. VFT2_DRV_KEYBOARD */
14 //    DWORD   dwFileDateMS;           /* e.g. 0 */
15 //    DWORD   dwFileDateLS;           /* e.g. 0 */
16 //} VS_FIXEDFILEINFO;
17 {
18     char szAppFullPath[_MAX_PATH] = {0};
19 
20     GetModuleFileName(NULL,szAppFullPath,MAX_PATH);//得到程序模块名称,全路径
21 
22     //获取当前文件的版本信息
23     DWORD dwLen = GetFileVersionInfoSize(szAppFullPath,NULL); 
24     char *pszAppVersion = new char[dwLen+1];
25     if(pszAppVersion)
26     {
27         memset(pszAppVersion,0,sizeof(char)*(dwLen+1));
28         GetFileVersionInfo(szAppFullPath,NULL,dwLen,pszAppVersion);
29         CString strVersion;
30         UINT nLen(0);
31         VS_FIXEDFILEINFO *pFileInfo(NULL);
32         VerQueryValue(pszAppVersion,"\\",(LPVOID*)&pFileInfo,&nLen);
33         if(pFileInfo)
34         {
35             //获取文件版本号
36             strVersion.Format("%d.%d.%d.%d",HIWORD(pFileInfo->dwFileVersionMS),
37                 LOWORD(pFileInfo->dwFileVersionMS),
38                 HIWORD(pFileInfo->dwFileVersionLS),
39                 LOWORD(pFileInfo->dwFileVersionLS));
40         }
41     }
42 }

基本思路就是先获取可执行文件所在的全路径,然后使用GetFileVersionInfo函数,获取版本信息;之后使用VerQueryValue函数,查询版本信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值