




Это должна быть строка, формат которой можно найти здесь:
http://www.hep.wisc.edu/~pinghc/books/apirefeng/v/verqueryvalue.html
Другой пример использования (на VB, легко читается):
http://support.microsoft.com/kb/160042
Вы также можете проверить всю эту статью CodeProject для рабочего примера на C++:
http://www.codeproject.com/KB/cpp/GetLocalVersionInfos.aspx
Еще одна статья на тему получения информации о версии:
http://www.microsoft.com/msj/0498/c0498.aspx
Когда вы просматриваете информацию о версии через редактор ресурсов, вы можете заметить, что есть начальный раздел с FILEVERSION, PRODUCTVERISON и т. д., А затем один или несколько блоков, которые содержат настройки для конкретного языка.
VS_VERSION_INFO VERSIONINFO
FILEVERSION 5,0,0,0
PRODUCTVERSION 5,0,0,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", ""
VALUE "FileVersion", "5, 0, 0, 0"
VALUE "ProductName", ""
VALUE "ProductVersion", "5, 0, 0, 0"
END
BLOCK "000004b0"
BEGIN
VALUE "CompanyName", ""
VALUE "FileVersion", "5, 0, 0, 0"
VALUE "ProductName", ""
VALUE "ProductVersion", "5, 0, 0, 0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0, 1200, 0x409, 1200
END
END
Чтобы получить VS_FIXEDFILEINFO с деталями, не зависящими от языка, используйте
VS_FIXEDFILEINFO *versionInfo;
PUINT versionInfoSize;
VerQueryValue(buffer.get(), TEXT("\\"), (void**) &versionInfo, &versionInfoSize))
Чтобы узнать, какие языки поддерживаются, используйте
Var *translationsInfo;
PUINT transaltionInfoSize;
VerQueryValue(buffer.get(), TEXT("\\VarFileInfo\\Translation"), (void**) &translationsInfo, &transaltionInfoSize))
Чтобы получить сведения о версии для конкретного языка, используйте
StringTable *stringTable;
PUINT stringTableSize;
std::wstring path( L"\\StringFileInfo\\" );
path += L"040904b0"; // get this value from the language support list
path += L"\\FileVersion";
VerQueryValue(buffer.get(), path.c_str(), (void**) &stringTable, &stringTableSize))