三日月館【別館】開発・制作Tips集
[WinAPI] 実行ファイルのプロパティから製品バージョンの文字列を取得する
最終更新:
fumiduki1985
-
view
Windowsの実行ファイル(*.exe)のプロパティの「詳細」タブ > 製品バージョン で確認できる文字列を取得するには下記のようにWindows APIを使用する。
下記記述例ではいろいろ省略しているが、それぞれのAPIのエラー時にはバッファの解放など気を付けるべき。
下記記述例ではいろいろ省略しているが、それぞれのAPIのエラー時にはバッファの解放など気を付けるべき。
記述例:
LPTSTR filepath = L"myApplication.exe"; // 製品バージョンを取得したいexeファイル名
DWORD handle;
DWORD infoBytes = GetFileVersionInfoSize(filepath, &handle);
if (infoBytes == 0) {
// バージョン情報の取得エラー
}
BYTE* versionInfoBuf = new BYTE[infoBytes];
if (!GetFileVersionInfo(filepath, handle, infoBytes, versionInfoBuf)) {
// バージョン情報の取得エラー
}
LPVOID fileInfoBuf;
UINT fileInfoBytes;
if (!VerQueryValue(versionInfoBuf, L"\\VarFileInfo\\Translation", &fileInfoBuf, &fileInfoBytes)) {
// バージョン情報の取得エラー
}
LPVOID fileVerBuf;
UINT fileVerBytes;
TCHAR langCodepage[256];
wsprintf(langCodepage ,
L"\\StringFileInfo\\%04x%04x\\FileVersion",
LOWORD(*(LPDWORD)fileInfoBuf), HIWORD(*(LPDWORD)fileInfoBuf));
if (!VerQueryValue(versionInfoBuf, langCodepage, &fileVerBuf, &fileVerBytes)) {
// バージョン情報の取得エラー
}
// この appVerString が「製品バージョン」の文字列になる
const TCHAR* appVerString = (const TCHAR*)fileVerBuf;
delete[] versionInfoBuf;
