windows获取文件版本信息(VS)

    文件版本信息包含在结构体VS_FIXEDFILEINFO中,VS_FIXEDFILEINFO结构在头文件WinVer.h中

typedef struct tagVS_FIXEDFILEINFO { 

  DWORD dwSignature; //包含的值是0xFEEF04BD 

  DWORD dwStrucVersion; //该结构的32位二进制版本号,高16位是主版本号,低16位是副版本号 

  DWORD dwFileVersionMS; //该文件二进制版本号的高32bits 

  DWORD dwFileVersionLS; //该文件二进制版本号的低32bits  

  DWORD dwProductVersionMS; //发布该文件的产品二进制版本号高32bits 

  DWORD dwProductVersionLS; //发布该文件的产品二进制版本号低32bits 

  DWORD dwFileFlagsMask; //比特掩码,标志dwFileFlags的有效位  

  DWORD dwFileFlags; //VS_FF_DEBUG---该文件包含调试信息或是由调试版编译的 

                       //VS_FF_INFOINFERRED---文件的版本结构是动态创建的, 

//因此,该结构中有的成员是空的或不正确的 

                       //VS_FF_PATCHED---该文件被修改过 

                       //VS_FF_PRERELEASE---该文件是开发版,不是商业发布版 

                       //VS_FF_PRIVATEBUILD---该文件不是由标准发布步骤构建的 

                       //VS_FF_SPECIALBUILD---该文件是由标准发布步骤构建的, 

//但是相同版本号文件的变种 

  DWORD dwFileOS; //该文件设计用于的操作系统  

  DWORD dwFileType; //文件类型:VFT_APP---文件包含一个应用程序 

                                  VFT_DLL---文件包含一个DLL 

                                  VFT_DRV---文件包含一个设备驱动 

                                  VFT_FONT---文件包含一个字体文件 

                                  VFT_STATIC_LIB---文件包含一个静态链接库 

                                  VFT_UNKNOWN---文件类型未知 

                                  VFT_VXD---文件包含一个虚拟设备 

  DWORD dwFileSubtype; //文件的子类型,由dwFileType决定 

  DWORD dwFileDateMS; //二进制文件创建日期和时间戳的高32bits  

  DWORD dwFileDateLS; //二进制文件创建日期和时间戳的低32bits 

} VS_FIXEDFILEINFO;
  1. 判断文件路径不为空,用PathFileExists()判断文件有效。
BOOL PathFileExists(LPCTSTR pszPath);

    pszPath:要验证的文件的完整路径字符串

    返回值:文件存在返回TRUE,否则返回FALSE

    2. 使用函数GetFileVersionInfoSize()获取文件版本信息的大小(以字节为单位)。

DWORD GetFileVersionInfoSize(LPCTSTR lptstrFilename,LPDWORD lpdwHandle);

	lptstrFilename: 要验证的文件的完整路径字符串

	lpdwHandle:指向函数设置为零的变量的指针

	返回值:成功返回文件版本信息的大小(以字节为单位),否则返回0

      3.  使用函数GetFileVersionInfo()获取文件版本信息。

BOOL GetFileVersionInfo( LPCTSTR lptstrFilename, DWORD dwHandle, 
                          DWORD dwLen, LPVOID lpData);

    lptstrFilename:要验证的文件的完整路径字符串

    dwHandle:忽略此参数,设置为0

    dwLen:使用GetFileVersionInfoSize()获取的版本信息大小

    lpData:指向接收文件版本信息的缓冲区的指针

    返回值:成功返回非0,失败返回0

     4.  使用VerQueryValue()函数从指定的版本信息资源中检索指定的版本信息。(要检索适当的资源,在调用VerQueryValue之前,必须先调用GetFileVersionInfoSize函数,然后调用GetFileVersionInfo函数)

BOOL VerQueryValue(LPCVOID pBlock, LPCTSTR lpSubBlock,
                     LPVOID *lplpBuffer, PUINT puLen);

    pBlock:指向包含由GetFileVersionInfo函数返回的版本信息资源的缓冲区的指针

    lpSubBlock:指向以零结尾的字符串的指针,该字符串指定要检索哪个版本信息值。字符串必须由反斜(\)分隔的名称组成

    lplpBuffer:指向VS_FIXEDFILEINFO结构体指针的地址(二级指针)

    puLen:包含一个指向lplpBuffer所指向的请求数据大小的指针

    返回值:成功返回非0,失败返回0

     5.  从FIXEDFILEINFO结构中提取版本信息。

你可能感兴趣的:(Visual,Studio)