首頁 > 後端開發 > C++ > 如何以程式設計方式取得 DLL 和 EXE 的版本資訊?

如何以程式設計方式取得 DLL 和 EXE 的版本資訊?

Susan Sarandon
發布: 2024-10-29 14:17:02
原創
477 人瀏覽過

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 擷取版本資料的子集,符合使用者的預定義條件。
  • 解釋版本號:透過了解底層透過了解版本資訊的結構,開發者可以從 dwFileVersionMS 和 dwFileVersionLS 值中精確解析出四部分點分版本號(x.x.x.x)。

版本檢索實作範例

以下程式碼範例說明了GetFileVersionInfo API 的實際應用:

<code class="python">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;
}</code>
登入後複製

總之,GetFileVersionInfo API 為以程式設計方式從DLL 和程式設計方式EXE 取得版本資訊提供了全面的解決方案。透過利用此功能,開發人員可以自動執行版本檢索任務,確保軟體開發工作的準確性和效率。

以上是如何以程式設計方式取得 DLL 和 EXE 的版本資訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板