获取windows可执行文件的version信息(版本号)
2015-08-13 15:58
573 查看
之前在msdn上Version Information看到文件版本信息的介绍,看着整体比较复杂,就一直没做。现在需要获取ocx文件的版本号,所以查找了下相关资料,比较有用的就是VS_FIXEDFILEINFO结构,获取这个参数就基本可以完成任务了。
代码如下:
基本思路就是先获取可执行文件所在的全路径,然后使用GetFileVersionInfo函数,获取版本信息;之后使用VerQueryValue函数,查询版本信息。
代码如下:
//typedef struct tagVS_FIXEDFILEINFO //{ // DWORD dwSignature; /* e.g. 0xfeef04bd */ // DWORD dwStrucVersion; /* e.g. 0x00000042 = "0.42" */ // DWORD dwFileVersionMS; /* e.g. 0x00030075 = "3.75" */ // DWORD dwFileVersionLS; /* e.g. 0x00000031 = "0.31" */ // DWORD dwProductVersionMS; /* e.g. 0x00030010 = "3.10" */ // DWORD dwProductVersionLS; /* e.g. 0x00000031 = "0.31" */ // DWORD dwFileFlagsMask; /* = 0x3F for version "0.42" */ // DWORD dwFileFlags; /* e.g. VFF_DEBUG | VFF_PRERELEASE */ // DWORD dwFileOS; /* e.g. VOS_DOS_WINDOWS16 */ // DWORD dwFileType; /* e.g. VFT_DRIVER */ // DWORD dwFileSubtype; /* e.g. VFT2_DRV_KEYBOARD */ // DWORD dwFileDateMS; /* e.g. 0 */ // DWORD dwFileDateLS; /* e.g. 0 */ //} VS_FIXEDFILEINFO; { char szAppFullPath[_MAX_PATH] = {0}; GetModuleFileName(NULL,szAppFullPath,MAX_PATH);//得到程序模块名称,全路径 //获取当前文件的版本信息 DWORD dwLen = GetFileVersionInfoSize(szAppFullPath,NULL); char *pszAppVersion = new char[dwLen+1]; if(pszAppVersion) { memset(pszAppVersion,0,sizeof(char)*(dwLen+1)); GetFileVersionInfo(szAppFullPath,NULL,dwLen,pszAppVersion); CString strVersion; UINT nLen(0); VS_FIXEDFILEINFO *pFileInfo(NULL); VerQueryValue(pszAppVersion,"\\",(LPVOID*)&pFileInfo,&nLen); if(pFileInfo) { //获取文件版本号 strVersion.Format("%d.%d.%d.%d",HIWORD(pFileInfo->dwFileVersionMS), LOWORD(pFileInfo->dwFileVersionMS), HIWORD(pFileInfo->dwFileVersionLS), LOWORD(pFileInfo->dwFileVersionLS)); } } }
基本思路就是先获取可执行文件所在的全路径,然后使用GetFileVersionInfo函数,获取版本信息;之后使用VerQueryValue函数,查询版本信息。
相关文章推荐
- easy.py使用中ValueError: could not convert string to float: svm_options错误问题解决
- 当前选中 底色切换
- 解决centos netstat和ps感染木马
- function, method, unbound_method, bound_method
- meta标签中的http-equiv属性使用介绍
- C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
- Linux上 安装JDK环境变量配置 新手必备
- js实现仿网易点击弹出提示同时背景变暗效果
- Dubbo源码分析——扩展点机制
- 用ant实现java项目的自动构建和部署
- 控制翻转(IOC)与 依赖注入 (DI)
- LoadRunner脚本 《第二篇》
- 【NOI2015】【软件包管理器】【树链剖分】
- hdu 1754__I Hate It
- 数组不初始化的默认值
- android SQLite使用SQLiteOpenHelper类对数据库进行操作
- 在Android中applicationId与package name的那些事
- ASP入门(八)-Request对象
- poj 3020 Antenna Placement(最小路径覆盖 + 构图)
- From 《Soft Skill》——Chapter 69. My personal success book list