или вы можете построить его самостоятельно. Откройте VS, создайте новое консольное приложение. Создайте простой проект без поддержки ATL или MFC, оставьте опцию stdafx отмеченной, но не проверяйте «пустой проект» и называйте его VersionInfo.
Вы получите простой проект с 2 файлами: VersionInfo.cpp и VersionInfo.h
Откройте файл cpp и вставьте в него следующее, затем скомпилируйте. Вы сможете запустить его, первым аргументом будет полное имя файла, он выведет "Product: 5.6.7.8 Файл: 1.2.3.4" на основе блока ресурсов Version. Если нет ресурса версии, он вернет -1, иначе 0.
Компилируется в двоичный файл 8 КБ с использованием DLL CRT, 60 КБ со всем, что связано статически (установите в параметрах C ++, измените «Страница генерации кода, Параметры времени выполнения» на «/ MT»)
НТН.
PS. Если вы не хотите использовать Visual Studio, он все равно будет компилироваться с использованием любого компилятора c ++ (скрестив пальцы), но вам почти наверняка придется изменить #pragma - просто укажите этот lib в настройках компоновщика, вместо прагмы. просто сокращение для автоматической связи с этой библиотекой.
// VersionInfo.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <windows.h>
#pragma comment(lib, "version.lib")
int _tmain(int argc, _TCHAR* argv[])
{
DWORD handle = 0;
DWORD size = GetFileVersionInfoSize(argv[1], &handle);
BYTE* versionInfo = new BYTE[size];
if (!GetFileVersionInfo(argv[1], handle, size, versionInfo))
{
delete[] versionInfo;
return -1;
}
// we have version information
UINT len = 0;
VS_FIXEDFILEINFO* vsfi = NULL;
VerQueryValue(versionInfo, L"\\", (void**)&vsfi, &len);
WORD fVersion[4], pVersion[4];
fVersion[0] = HIWORD(vsfi->dwFileVersionMS);
fVersion[1] = LOWORD(vsfi->dwFileVersionMS);
fVersion[2] = HIWORD(vsfi->dwFileVersionLS);
fVersion[3] = LOWORD(vsfi->dwFileVersionLS);
pVersion[0] = HIWORD(vsfi->dwProductVersionMS);
pVersion[1] = LOWORD(vsfi->dwProductVersionMS);
pVersion[2] = HIWORD(vsfi->dwProductVersionLS);
pVersion[3] = LOWORD(vsfi->dwProductVersionLS);
printf("Product: %d.%d.%d.%d File: %d.%d.%d.%d\n",
pVersion[0], pVersion[1],
pVersion[2], pVersion[3],
fVersion[0], fVersion[1],
fVersion[2], fVersion[3]);
delete[] versionInfo;
return 0;
}