または、自分で作成することもできます。VSを開き、新しいコンソールアプリケーションを作成します。ATLまたはMFCをサポートしない単純なプロジェクトを作成し、stdafxオプションをオンのままにしますが、「空のプロジェクト」をチェックせずにVersionInfoと呼びます。
VersionInfo.cppとVersionInfo.hの2つのファイルを含む単純なプロジェクトを取得します
cppファイルを開き、以下を貼り付けてからコンパイルします。あなたはそれを実行することができます、最初の引数は完全なファイル名です、それはバージョンリソースブロックに基づいて「製品:5.6.7.8ファイル:1.2.3.4」を出力します。バージョンリソースがない場合は-1を返し、そうでない場合は0を返します。
dll CRTを使用して8kバイナリにコンパイルし、すべてを静的にリンクした60k(C ++オプションで設定、「コード生成ページ、ランタイムオプション」を「/ MT」に変更)
HTH。
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;
}