您的位置:首页 > 编程语言 > C语言/C++

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

2012-11-10 22:09 381 查看
//////////////////////////////////////////////////////////////
//
// 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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: