获取exe文件信息

来源:互联网 发布:用visio画网络拓扑图 编辑:程序博客网 时间:2024/04/27 18:58
#include <atlstr.h>#pragma comment(lib, "version.lib")struct EXE_FILE_INFO  {CString CompanyName;CString FileDescription;CString FileVersion;CString InternalName;CString LegalCopyright;CString OriginalFilename;CString ProductName;CString ProductVersion;// no means...CString Comments;CString LegalTrademarks;CString PrivateBuild;CString SpecialBuild;};BOOL GetExeFileInfo(EXE_FILE_INFO& fileInfo, CString exePath){    DWORD dwLen = 0;    char* lpData = NULL;    dwLen = GetFileVersionInfoSize(exePath, 0);    if (0 == dwLen)return FALSE;    lpData = new char[dwLen+1];    if(!GetFileVersionInfo(exePath, 0, dwLen, lpData))    {        delete lpData;        return FALSE;    }    LPVOID lpBuffer = NULL;    UINT uLen = 0;CString subBlock;subBlock.Format(_T("\\StringFileInfo\\%s04b0\\"), _T("0804"));// 0409英文,0804中文    BOOL b1 = VerQueryValue(lpData, subBlock + _T("CompanyName"), &lpBuffer, &uLen); fileInfo.CompanyName = (TCHAR*)lpBuffer;BOOL b2 = VerQueryValue(lpData, subBlock + _T("FileDescription"), &lpBuffer, &uLen); fileInfo.FileDescription = (TCHAR*)lpBuffer;BOOL b3 = VerQueryValue(lpData, subBlock + _T("FileVersion"), &lpBuffer, &uLen); fileInfo.FileVersion = (TCHAR*)lpBuffer;BOOL b4 = VerQueryValue(lpData, subBlock + _T("InternalName"), &lpBuffer, &uLen); fileInfo.InternalName = (TCHAR*)lpBuffer;BOOL b5 = VerQueryValue(lpData, subBlock + _T("LegalCopyright"), &lpBuffer, &uLen); fileInfo.LegalCopyright = (TCHAR*)lpBuffer;BOOL b6 = VerQueryValue(lpData, subBlock + _T("OriginalFilename"), &lpBuffer, &uLen); fileInfo.OriginalFilename = (TCHAR*)lpBuffer;BOOL b7 = VerQueryValue(lpData, subBlock + _T("ProductName"), &lpBuffer, &uLen); fileInfo.ProductName = (TCHAR*)lpBuffer;BOOL b8 = VerQueryValue(lpData, subBlock + _T("ProductVersion"), &lpBuffer, &uLen); fileInfo.ProductVersion = (TCHAR*)lpBuffer;// no means...BOOL b9 = VerQueryValue(lpData, subBlock + _T("Comments"), &lpBuffer, &uLen); fileInfo.Comments = (TCHAR*)lpBuffer;BOOL b10 = VerQueryValue(lpData, subBlock + _T("LegalTrademarks"), &lpBuffer, &uLen); fileInfo.LegalTrademarks = (TCHAR*)lpBuffer;BOOL b11 = VerQueryValue(lpData, subBlock + _T("PrivateBuild"), &lpBuffer, &uLen); fileInfo.PrivateBuild = (TCHAR*)lpBuffer;BOOL b12 = VerQueryValue(lpData, subBlock + _T("SpecialBuild"), &lpBuffer, &uLen); fileInfo.SpecialBuild = (TCHAR*)lpBuffer;    if (!b1)    {        return FALSE;    }    delete [] lpData;    return TRUE;}LPCTSTR GetExePath(void){// 获取主程序所在路径, 存在path中TCHAR path[MAX_PATH];GetModuleFileName(NULL, path, MAX_PATH);return CString(path);}int main(void){EXE_FILE_INFO fileInfo;GetExeFileInfo(fileInfo, _T("D:\\000\\桌面\\SnapShot.exe"));return 0;}

0 0
原创粉丝点击