首页 > 后端开发 > C++ > 如何以编程方式获取 DLL 和 EXE 的版本信息?

如何以编程方式获取 DLL 和 EXE 的版本信息?

Susan Sarandon
发布: 2024-10-29 14:17:02
原创
478 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板