首頁  >  文章  >  後端開發  >  如何使用 Win32 API 從 DLL 和 EXE 檢索版本資訊?

如何使用 Win32 API 從 DLL 和 EXE 檢索版本資訊?

DDD
DDD原創
2024-11-01 11:22:46360瀏覽

How to Retrieve Version Information from DLLs and EXEs using Win32 APIs?

使用 Win32 API 從 DLL 和 EXE 檢索版本資訊

在處理 DLL 和 EXE 時,經常需要取得它們的版本數字。與 Windows 版本相反,這個由四部分組成的點版本(例如 x.x.x.x)可以透過檔案屬性中的「詳細資料」標籤存取。

解決方案:GetFileVersionInfo API

以程式方式擷取版本資訊的關鍵在於 GetFileVersionInfo API。詳細文件可在 Microsoft 的 MSDN 網站上找到,標題為「使用版本資訊」。

範例實作

在C 或C 中,典型的實作可能類似於以下內容code:

<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) {
                    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>

請記住' szVersionFile' 調整為您要檢查的DLL 或EXE 的實際路徑和檔案名稱。

以上是如何使用 Win32 API 從 DLL 和 EXE 檢索版本資訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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