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

DLL と EXE のバージョン情報をプログラムで取得するにはどうすればよいですか?

2024 年 11 月 10 日に公開
ブラウズ:388

How to Programmatically Get Version Information for DLLs and EXEs?

DLL および EXE のバージョン情報をプログラムで取得する方法

ソフトウェア開発の領域では、ダイナミック リンク ライブラリ ( DLL) と実行可能プログラム (EXE)。 C または C からアクセスできる Win32 ネイティブ API を利用することで、開発者はこれらの実行可能エンティティの製品およびファイル バージョンをシームレスに取得できます。

GetFileVersionInfo API: バージョン情報のロック解除

バージョン情報のロックを解除する鍵GetFileVersionInfo API にあります。この強力な関数は、指定された DLL または EXE ファイルに関連するデータをバッファに設定します。その使用法の複雑さを詳しく見てみましょう:

  • ファイル サイズを決定します: GetFileVersionInfoSize は、必要なバッファ サイズを提供することでメモリ割り当ての最適化をガイドします。
  • バージョン データの取得: GetFileVersionInfo 権限バッファ内に安全に保存されているバージョン情報へのアクセス。
  • バッファのクエリ: VerQueryValueユーザーの事前定義基準に一致するバージョン データのサブセットを抽出します。
  • バージョン番号の解釈: バージョン情報の基礎となる構造を理解することにより、開発者は、バージョン データから 4 つの部分からなるドット付きバージョン番号 (x.x.x.x) を正確に解析できます。 dwFileVersionMS および dwFileVersionLS の値。

でのバージョン取得の例実践

次のコード サンプルは、GetFileVersionInfo API の実際のアプリケーションを示しています。

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) {
                    // Parse the file version into a four-part dotted string
                    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;
}

結論として、GetFileVersionInfo API は、DLL および EXE からプログラムによってバージョン情報を取得するための包括的なソリューションを提供します。この機能を利用することで、開発者はバージョン取得タスクを自動化し、ソフトウェア開発作業の正確さと効率を確保できます。

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

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

Copyright© 2022 湘ICP备2022001581号-3