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

代码如下:

 //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] = {}; GetModuleFileName(NULL,szAppFullPath,MAX_PATH);//得到程序模块名称,全路径 //获取当前文件的版本信息
DWORD dwLen = GetFileVersionInfoSize(szAppFullPath,NULL);
char *pszAppVersion = new char[dwLen+];
if(pszAppVersion)
{
memset(pszAppVersion,,sizeof(char)*(dwLen+));
GetFileVersionInfo(szAppFullPath,NULL,dwLen,pszAppVersion);
CString strVersion;
UINT nLen();
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函数,查询版本信息。

获取windows可执行文件的version信息(版本号)的更多相关文章

  1. [C语言](二)01 获取Windows图形构件大小信息

    SYSMETS.c #include <windows.h> #include "SYSMETS.H"//自定义的单元,所以用"",不是用<& ...

  2. Python使用WMI模块获取Windows系统的硬件信息,并使用pyinstaller库编译打包成exe的可执行文件

    由于公司现阶段大多数应用软件都是基于Windows系统开发和部署,很多软件安装部署都是在windows server 2012.windows server 2008之类的服务器上,部门同事每次测试一 ...

  3. sigar获取Windows系统的硬件信息进行JAVA后台系统资源监控

    windows下,将sigar-amd64-winnt.dll复制到jdk的bin目录下或者拷贝到WEB-INF/lib下 linux下,将libsigar-amd64-linux.so拷贝到jdk的 ...

  4. python使用wmi模块获取windows下的系统信息监控系统-乾颐堂

    Python用WMI模块获取Windows系统的硬件信息:硬盘分区.使用情况,内存大小,CPU型号,当前运行的进程,自启动程序及位置,系统的版本等信息. 本文实例讲述了python使用wmi模块获取w ...

  5. 获取windows版本信息的做法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 个人不建议用 GetVersion 或GetVersionEx 之类的 API 来获取系统版本号.注意微软也说过,这个 ...

  6. C++通用WMI接口实现获取Windows操作系统内核版本号

    作为一名Windows开发者,能熟练掌握WMI技术,在开发Windows应用程序的时候往往能够事半功倍.今天来给大家分享一个使用WMI来获取Windows操作系统内核版本号的例子. 首先我们打开WMI ...

  7. 获取Windows平台下 安装office 版本位数信息

    最近在处理客户端安装程序过程,有一个需求:需要检测Windows平台下安装office 版本信息以及获取使用的office是32 位还是64 位: 当检测出office 位数为64位时,提示当前off ...

  8. Python使用wmi获取Windows相关信息

    在使用Python获取Windows系统上的相关的信息可以使用WMI接口来获取, 什么是wmi? WMI是一项核心的Windows管理技术,WMI作为一种规范和基础结构,通过它可以访问.配置.管理和监 ...

  9. Delphi调用API函数获取Windows目录信息、获取System目录信息、获取Temp临时文件目录信息

    var Str1, Str2: Array[..Max_Path]of Char;//开辟缓冲区 Str3: Array[..]of Char; begin GetWindowsDirectory(@ ...

随机推荐

  1. linux磁盘相关命令

    一.查看文件夹大小du du -h -d1 2>/dev/null 解释: h表示以可读性较好的方式显示,即带单位显示 d表示深度depth,为1表示只显示当前目录下文件的大小 2>/de ...

  2. [转]NLP数据集

    原文链接 nlp-datasets Alphabetical list of free/public domain datasets with text data for use in Natural ...

  3. 【LeetCode】207. Course Schedule (2 solutions)

    Course Schedule There are a total of n courses you have to take, labeled from 0 to n - 1. Some cours ...

  4. 【DeepLearning】Exercise:Softmax Regression

    Exercise:Softmax Regression 习题的链接:Exercise:Softmax Regression softmaxCost.m function [cost, grad] = ...

  5. nginx 中文和英文资料

    http://www.nginx.cn/doc/ http://manual.51yip.com/nginx/ http://tool.oschina.net/apidocs/apidoc?api=n ...

  6. magento 得到树形结构的分类列表

    <?php ?> <?php   class Lehui_AllCategoryList_Block_List extends Mage_Core_Block_Template { ...

  7. WCF异步调用

    添加引用服务--高级--选中 生产异步操作 服务端接口操作 [OperationContract]int Add(int a, int b); 客户端: 引用服务:在引用服务时,左下角点击“高级”按钮 ...

  8. controller.tabBarItem.title = @"11111"不显示

    场景: 在xcode8.3下  今天在弄工程的时候,发现把之前工程中的tabbar控制器拿过来后,在控制器里面用 controller.tabBarItem.title = @"11111& ...

  9. OpenCV 学习笔记03 boundingRect、minAreaRect、minEnclosingCircle、boxPoints、int0、circle、rectangle函数的用法

    函数中的代码是部分代码,详细代码在最后 1 cv2.boundingRect 作用:矩形边框(boundingRect),用于计算图像一系列点的外部矩形边界. cv2.boundingRect(arr ...

  10. root目录空间不够的问题

    今天导入mysql表的时候,提示write file error /tmp/xxx 原因是表太大,创建临时表的时候,tmp目录不够空间了. 找到一个解决方法: 使用 mount --bind moun ...