C++获取文件版本等信息

#include "stdio.h"
#include <iostream>
#include <string>
#include <tchar.h>
#include <windows.h>
#pragma comment(lib, "version.lib")
using namespace std;
std::string GetFileVersion(char *strFilePath)
{
DWORD dwSize;
DWORD dwRtn;
std::string szVersion;
dwSize = GetFileVersionInfoSize(strFilePath, NULL);
if (dwSize == 0)
{
return "读取文件失败!";
}
char *pBuf;
pBuf = new char[dwSize + 1];
if (pBuf == NULL)
return "";
memset(pBuf, 0, dwSize + 1);
dwRtn = GetFileVersionInfo(strFilePath, NULL, dwSize, pBuf);
if (dwRtn == 0)
{
return "";
}
LPVOID lpBuffer = NULL;
UINT uLen = 0;
dwRtn = VerQueryValue(pBuf,
TEXT("\\StringFileInfo\\080404b0\\FileDescription"),
&lpBuffer,
&uLen);
if (dwRtn == 0)
{
return "";
}
szVersion = (char *)lpBuffer;
delete pBuf;
return szVersion;
}
void main()
{
char *strFilePath = "C:\\Program Files (x86)\\Tencent\\QQ\\Bin\\QQ.exe";
cout << strFilePath << " FileDescription is: " << GetFileVersion(strFilePath) << endl;
getchar();
}