首页  >  文章  >  后端开发  >  如何使用 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