• C++语言 获取EXE文件的属性详细信息


    //////////////////////////////////////////////////////////////
    //
    // File: getfileversion.cpp
    // Description: 获取EXE文件的属性详细信息
    // Created: 2012-10-18
    // Author:pythonschool.com
    //
    //////////////////////////////////////////////////////////////
    /*
    The following code shows how to get FILEINFO value from resource file.
    These WIN32 functions will be used:
    * GetFileVersionInfo
    * GetFileVersionInfoSize
    * VerQueryValue
    * GetModuleFileName
    */
    #include "stdafx.h"
    #include <windows.h>
    #include <tchar.h>
    #include <string>
    #include <iostream>
    #include "stdio.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()
    {
    #define MY_BUFSIZE 500
     HKEY hKey;
     TCHAR szProductType[MY_BUFSIZE];
     DWORD dwBufLen = MY_BUFSIZE;
     LONG lRet;
     if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,
      TEXT("SOFTWARE\\Tencent\\PlatForm_Type_List\\3"),
      0,
      KEY_QUERY_VALUE,
      &hKey) == ERROR_SUCCESS)
     {
      lRet = RegQueryValueEx(hKey,
       TEXT("TypePath"),
       NULL,
       NULL,
       (LPBYTE)szProductType,
       &dwBufLen);
      //return szProductType;
     
     }
     RegCloseKey(hKey);
     //char * strFilePath  = "C:\\Program Files\\Tencent\\QQ\\Bin\\QQ.exe";
     char * strFilePath = szProductType;
        cout << strFilePath << " FileDescription is: " << GetFileVersion(strFilePath) << endl;
     getchar();
    }
    学习笔记转摘于: 丝酷网 http://www.pythonschool.com/
  • 相关阅读:
    firefox显示 您的连接不安全 解决办法
    【TweenMax】to():添加动画
    【TweenMax】实例TimelineMax
    【js】document.all用法
    【js】阻止默认事件
    【封装】【JS】getClassName方法、get class+id封装
    【HTML】html结构,html5结构
    【实例】原生 js 实现全屏滚动效果
    【音乐】播放器
    GO : 斐波纳契数列
  • 原文地址:https://www.cnblogs.com/pythonschool/p/2764517.html
Copyright © 2020-2023  润新知