「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > C または C++ で Win32 API を使用して DLL および EXE からバージョン情報を取得するにはどうすればよいですか?

C または C++ で Win32 API を使用して DLL および EXE からバージョン情報を取得するにはどうすればよいですか?

2024 年 11 月 18 日に公開
ブラウズ:683

How can I retrieve version information from DLLs and EXEs using Win32 API in C or C  ?

DLL および EXE のバージョン情報の取得

多くのアプリケーションでは、ファイルからバージョン情報を取得する機能が必要です。この情報は、プロパティ ダイアログ ボックスにバージョン番号を表示するなど、表示目的で使用されます。

Win32 API には、バージョン情報を取得するために使用できる関数がいくつか用意されています。一般的なアプローチの 1 つは、GetFileVersionInfo API を使用することです。

GetFileVersionInfo の使用

GetFileVersionInfo 関数は、ファイルのバージョン リソースに関する情報を取得します。この関数の使用に必要な手順は次のとおりです。

  1. ファイル パスとバージョン情報へのハンドルを受け取る DWORD 変数へのポインターを指定して GetFileVersionInfo を呼び出します。
  2. GetFileVersionInfoSize を呼び出します。ステップ 1 のファイル パスとハンドルを使用して、バージョン情報のサイズを決定します。
  3. ステップ 1 で取得したサイズのバッファを割り当てます。 2.
  4. ステップ 3 のファイル パス、ハンドル、サイズ、バッファへのポインタを指定して GetFileVersionInfo を再度呼び出し、バージョン情報を取得します。

バージョン データの抽出

バージョン情報を取得したら、VerQueryValue 関数を使用して特定の情報を抽出できます。次のサンプル コードは、製品バージョンとファイル バージョン番号を抽出する方法を示しています。

LPSTR verData = new char[verSize];

if (GetFileVersionInfo(szVersionFile, verHandle, verSize, verData))
{
    if (VerQueryValue(verData, "\\", (VOID FAR* FAR*)&lpBuffer, &size))
    {
        if (size)
        {
            VS_FIXEDFILEINFO *verInfo = (VS_FIXEDFILEINFO *)lpBuffer;
            if (verInfo->dwSignature == 0xfeef04bd)
            {
                TRACE("File Version: %d.%d.%d.%d\n",
                (verInfo->dwFileVersionMS >> 16) & 0xffff,
                (verInfo->dwFileVersionMS >> 0) & 0xffff,
                (verInfo->dwFileVersionLS >> 16) & 0xffff,
                (verInfo->dwFileVersionLS >> 0) & 0xffff
                );
            }
        }
    }
}

次の手順に従うと、C または C の Win32 ネイティブ API を使用して、DLL または EXE ファイルの製品バージョンとファイル バージョン番号をプログラムで取得できます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3