ホームページ  >  記事  >  バックエンド開発  >  C または C でプログラム的に DLL または EXE ファイルのバージョンを取得するにはどうすればよいですか?

C または C でプログラム的に DLL または EXE ファイルのバージョンを取得するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 01:25:28314ブラウズ

How to Retrieve DLL or EXE File Versions Programmatically in C or C  ?

C または C で DLL または EXE ファイルのバージョンをプログラムで取得する方法

ソフトウェアの問題のトラブルシューティングやファイルの整合性の確認を行うときに、次のようなことがよくあります。特定の DLL または EXE ファイルのバージョン情報を取得するために必要です。ネイティブ Win32 API を利用することで、C および C 開発者はこれらのバージョン番号を効果的に取得できます。これらのバージョン番号は通常、ファイルのプロパティ ウィンドウの [詳細] タブに 4 つの部分からなるドット表記 (x.x.x.x など) として表示されます。

このタスクを実行するには、GetFileVersionInfo API を使用する必要があります。 MSDN に記載されているように、この API は、指定されたファイルに関連付けられたバージョン情報へのアクセスを提供します。この API を使用すると、開発者は DLL と EXE の製品バージョンとファイル バージョンを取得できます。

次のコード サンプルは、GetFileVersionInfoVerQueryValue:

<code class="c">DWORD verHandle = 0;
UINT size = 0;
LPBYTE lpBuffer = NULL;
DWORD verSize = GetFileVersionInfoSize(szVersionFile, &verHandle);

if (verSize != NULL) {
    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) {
                    // DWORD is always 32 bits, regardless of system architecture
                    // Get the version numbers from dwFileVersionMS and dwFileVersionLS
                    TRACE("File Version: %d.%d.%d.%d\n",
                           (verInfo->dwFileVersionMS >> 16) & 0xffff,
                           (verInfo->dwFileVersionMS >> 0) & 0xffff,
                           (verInfo->dwFileVersionLS >> 16) & 0xffff,
                           (verInfo->dwFileVersionLS >> 0) & 0xffff);
                }
            }
        }
    }
    delete[] verData;
}</code>
前述の API とコード サンプルを利用することで、プログラマーは DLL または EXE ファイルのバージョン情報を簡単に取得できます。この機能は、デバッグや詳細なファイル検査を行うときに非常に役立つことがわかります。

以上がC または C でプログラム的に DLL または EXE ファイルのバージョンを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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