三日月館【別館】開発・制作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;