Не удается получить минорную версию исполняемого файла

В файле ресурсов прописана версия исполняемого файла, мне нужно извлечь минорную, и мажорную версию, мажорная извлекается, но вот минорная увы:

char buffer[64]               = { 0 };
VS_FIXEDFILEINFO version_info = { 0 };
DWORD  verHandle              = 0;
UINT   size                   = 0;
LPBYTE lpBuffer               = NULL;
DWORD  verSize                = GetFileVersionInfoSize("el.exe", &verHandle);
if (verSize != 0) {
  LPSTR verData = malloc(verSize * sizeof(TCHAR));
  if (GetFileVersionInfo(TEXT("el.exe"), verHandle, verSize, verData)) {
    if (VerQueryValue(verData,"\\", (VOID FAR* FAR*) &lpBuffer, &size)) {
      if (size) {
        VS_FIXEDFILEINFO *verInfo = (VS_FIXEDFILEINFO *)lpBuffer;
        if (verInfo->dwSignature == 0xfeef04bd) {
          sprintf(buffer, "%d.%d",
                  ( verInfo->dwFileVersionMS >> 16 ) & 0xffff,
                  ( verInfo->dwFileVersionMS >> 0  ) & 0xffff);
          version_info = (*verInfo);
        }
      }
    }
  }
  free(verData);
}

Данный код отдает 1.0 вместо 1.10.

BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "041904b0"
        BEGIN
            ...
            VALUE "FileVersion", "1.10.0.0"
            VALUE "ProductVersion", "1.10.0.0"
            ...
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x419, 1200
    END
END

Как правильно извлечь версию?


Ответы (0 шт):