首頁  >  文章  >  後端開發  >  如何使用 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 提供了多個可用於取得版本資訊的函數。常見的方法是使用 GetFileVersionInfo API。

使用 GetFileVersionInfo

GetFileVersionInfo 函數擷取有關檔案版本資源的資訊。使用此函數涉及的步驟是:

  1. 使用檔案路徑和指向 DWORD 變數的指標呼叫 GetFileVersionInfo,該變數將接收版本資訊的句柄。
  2. 使用下列指令呼叫 GetFileVersionInfoSize使用步驟 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn