当前位置:首页 > 编程学习 > C++获取文件版本等信息

C++获取文件版本等信息

编程学习2022-07-1054670

C++获取文件版本等信息.jpg C++获取文件版本等信息  编程 技术 C++ 第1张



#include "stdio.h"
#include <iostream>
#include <string>
#include <tchar.h>
#include <windows.h>

#pragma comment(lib, "version.lib")
using namespace std;
std::string GetFileVersion(char *strFilePath)
{
    DWORD dwSize;
    DWORD dwRtn;
    std::string szVersion;
    //获取版本信息大小
    dwSize = GetFileVersionInfoSize(strFilePath, NULL);
    if (dwSize == 0)
    {
        return "读取文件失败!";
    }
    char *pBuf;
    pBuf = new char[dwSize + 1];
    if (pBuf == NULL)
        return "";
    memset(pBuf, 0, dwSize + 1);
    //获取版本信息
    dwRtn = GetFileVersionInfo(strFilePath, NULL, dwSize, pBuf);
    if (dwRtn == 0)
    {
        return "";
    }
    LPVOID lpBuffer = NULL;
    UINT uLen = 0;
    //版本资源中获取信息

    dwRtn = VerQueryValue(pBuf,
                          TEXT("\\StringFileInfo\\080404b0\\FileDescription"), // 0804中文
                          // 04b0即1252,ANSI
                          //可以从ResourceView中的Version中BlockHeader中看到
                          //可以测试的属性
                          /*
                          CompanyName
                          FileDescription
                          FileVersion
                          InternalName
                          LegalCopyright
                          OriginalFilename
                          ProductName
                          ProductVersion
                          Comments
                          LegalTrademarks
                          PrivateBuild
                          SpecialBuild
                          */
                          &lpBuffer,
                          &uLen);
    if (dwRtn == 0)
    {
        return "";
    }
    szVersion = (char *)lpBuffer;
    delete pBuf;
    return szVersion;
}

void main()
{
    char *strFilePath = "C:\\Program Files (x86)\\Tencent\\QQ\\Bin\\QQ.exe";
    cout << strFilePath << " FileDescription is: " << GetFileVersion(strFilePath) << endl;
    getchar();
}


扫描二维码推送至手机访问。

版权声明:本文由海阔天空发布,如需转载请注明出处。

本文链接:https://apull.net/html/20220710164438.html

标签: 编程技术C++
分享给朋友:

相关文章

[转] 深入探讨C++中的引用

[转] 深入探讨C++中的引用

  摘要:介绍C++引用的基本概念,通过详细的应用分析与说明,对引用进行全面、透彻地阐述。  关键词:引用,const,多态,指针  引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人使用它仅仅是想当然,在某些微妙的场合,很容易出错,究其原由,大多因为没有搞清本源。故在本篇中我将对引用进行详细讨论,希望对大家更好地理解和使用引用起到抛砖引玉的作用。  引用简介  引用就是某一变量(目标)的一个别名,...

 C++ string类常用函数

C++ string类常用函数

string类的构造函数:string(const char *s);    //用c字符串s初始化 string(int n,char  c);     //用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1;string  s2="hello";都是正确的写法。...

致面向对象技术初学者的一封公开信

致面向对象技术初学者的一封公开信

 致面向对象技术初学者的一封公开信 Alistair Cockburn 著(1996 年2 月),袁峰 译介绍 首先我要解释一下为什么会写这封公开信。这似乎已经成了一种习惯,但这个步骤还是需要的。过去6 年中, 我曾经无数次地在饭店、酒吧、旅店大厅等各种地方以同一种方式度过愉快而漫长的夜晚:和同样追求真理、光明和智慧的伙伴一起探讨面向对象的真谛。现在,我已经可以回答很多当年我遇到的问题。这些同样的问题也在困扰着我的一位新同事,在一家饭店里,我花了整整一个晚上和他讨...

常用asp函数

常用asp函数

<% '------------------------------------- '所有功能函数名如下: ' StrLength(str) 取得字符串长度 ' CutStr(str,strlen) 字符串长度切割 ' CheckIsEmpty(tstr) 检测是否为空 ' isInteger(para) 整数检验 ' CheckName(str) 名字字符校验 ' CheckPassword(str) 密码检验 ' CheckEmail(emai...