#include <Windows.h>
#include <WinVer.h>
#pragma comment(lib, "version.lib")
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR* pszDestFilePath = _T("d:\\test.exe");
DWORD dwHandle = 0;
DWORD dwSize = 0;
dwSize = ::GetFileVersionInfoSize(pszDestFilePath, &dwHandle);
if(0 == dwSize)
return 1;
BYTE* pBlockData = new BYTE[dwSize];
ZeroMemory(pBlockData, dwSize);
if(FALSE == ::GetFileVersionInfo(pszDestFilePath, dwHandle, dwSize, pBlockData))
{
delete [] pBlockData;
return 1;
}
VS_FIXEDFILEINFO* pVerInfo = NULL;
UINT uLen = 0;
if(FALSE == ::VerQueryValue(pBlockData, _T("\\"), (LPVOID*)&pVerInfo, &uLen))
{
delete [] pBlockData;
return 1;
}
_tprintf_s(_T("Major Version : %d\n"), HIWORD(pVerInfo->dwFileVersionMS));
_tprintf_s(_T("Minor Version : %d\n"), LOWORD(pVerInfo->dwFileVersionMS));
_tprintf_s(_T("Release Version : %d\n"), HIWORD(pVerInfo->dwFileVersionLS));
_tprintf_s(_T("Test Version : %d\n"), LOWORD(pVerInfo->dwFileVersionLS));
delete [] pBlockData;
return 0;
}