ホームページ  >  記事  >  バックエンド開発  >  C または C で Win32 API を使用して DLL および EXE からバージョン情報を取得するにはどうすればよいですか?

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

DDD
DDDオリジナル
2024-11-01 08:23:02436ブラウズ

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. Call GetFileVersionInfoSize withステップ 1 のファイル パスとハンドルを使用して、バージョン情報のサイズを決定します。
  3. ステップ 2 で取得したサイズのバッファを割り当てます。
  4. ファイル パス、ハンドルを指定して GetFileVersionInfo を再度呼び出します。 、サイズ、およびバージョン情報を取得するための手順 3 のバッファへのポインタ。

バージョン データの抽出

バージョン情報を取得したら、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
                );
            }
        }
    }
}

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

以上がC または C で Win32 API を使用して DLL および EXE からバージョン情報を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。