• 获取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函数,查询版本信息。

  • 相关阅读:
    vi编辑器
    在shell脚本中使用函数
    在shell脚本中进行条件控制以及使用循环
    shell指令expr和test指令
    利用ps指令查看某个程序的进程状态
    shell变量的使用
    创建和运行shell脚本程序
    关于强制类型转换(c语言)
    elastic 常用查询操作
    elastic 集群安装
  • 原文地址:https://www.cnblogs.com/tocy/p/get-version-info-in-windows.html
Copyright © 2020-2023  润新知