自ファイルのバージョン情報

  // 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 のリンクが必要。


VC覚書きページ...