自ファイルのバージョン情報
// Product version string
DWORD dwLen, dwBuf;
DWORD* pdwCodePage;
TCHAR szKey[256], szFile[_MAX_PATH];
TCHAR* pszProductVersion;
_tcsncpy(szFile, szFileName, sizeof(szFile));
szFile[_MAX_PATH-1] = _T('\0');
dwLen = ::GetFileVersionInfoSize(szFile, &dwBuf);
BYTE* pBuf = new BYTE[dwLen];
::GetFileVersionInfo(szFile, 0, dwLen, pBuf);
UINT uiBuf;
::VerQueryValue(pBuf, _T("\\VarFileInfo\\Translation"), (LPVOID*)&pdwCodePage, &uiBuf);
_sntprintf(szKey, sizeof(szKey), _T("\\StringFileInfo\\%04x%04x\\ProductVersion"), LOWORD(*pdwCodePage), HIWORD(*pdwCodePage));
::VerQueryValue(pBuf, szKey, (LPVOID*)&pszProductVersion, &uiBuf);
// pszProductVersion がプロダクトバージョン
// strcpy(sz, pszProductVersion);
delete[] pBuf;
\StringFileInfo\%04x%04x\ProductVersion を変更するとさまざまな情報が得られる。ただし
バージョン情報がないファイルも多いので戻り値チェックは必須。
version.lib のリンクが必要。