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

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

编程学习2022-07-1014550

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://www.apull.net/html/20220710164438.html

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

相关文章

 C++中指针的使用艺术

C++中指针的使用艺术

C++中指针的使用艺术 在C++编程中使用指针能有速度快,节约内存等优点,是很多C++程序员的最爱。但指针是一把双刃剑,用好了它,你就会发现指针有多么的方便,反之,你可能就头疼了,往往会出现意想不到的问题。   一.什么是指针:   其实指针就像是其它变量一样,所不同的是一般的变量包含的是实际的真实的数据,而指针只是一个指示器,它告诉程序在内存的哪块区域可以找到数据。   这是一个非常重要的概念,有很多程序和算法都是围绕指针设计的,如链...

代码迷惑技术如何保护Java免遭逆向工程

代码迷惑技术如何保护Java免遭逆向工程

很少有问题比程序员遇到不访问无法利用的源代码就无法解决的漏洞更令人沮丧的了。你是否在通过一个在线开源库修补代码,或正在调用常用操作系统例行程序;你可能每周都要花时间处理不是由你编写,因而也无法访问其源代码的代码。因为Java字节码包含许多和原始代码相同的信息,所以很容易对Java类文件执行逆向工程。另外,Java程度以其“一旦编写,随处运行”特性而闻名。虽然并非Java语言的专利,但代码反编译从未在Java开发者之中得到如此公开或普遍地利用。反编译的对...

 C++ string类常用函数

C++ string类常用函数

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

用VB类实现文件对话框

用VB类实现文件对话框

用VB类实现文件对话框'类名:ComDlg.cls '作用:文件打开保存对话框 ' ' ' 'By:Apull '2007-5-21 'http://www.apull.net Option Explicit Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" ( _ pOpenfil...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。