您的位置:首页 > 其它

获取文件版本信息

2011-11-04 12:05 253 查看
mark一下

char*   szFileName   =   "C:\\windows\\system32\\cmd.exe";
DWORD   dwSize   =   GetFileVersionInfoSize(szFileName,NULL);
LPVOID   pBlock   =   malloc(dwSize);
GetFileVersionInfo(szFileName,0,dwSize,pBlock);

char*   pVerValue   =   NULL;
UINT   nSize   =   0;
VerQueryValue(pBlock,TEXT( "\\VarFileInfo\\Translation"),
(LPVOID*)&pVerValue,&nSize);

CString   strSubBlock,strTranslation,strTemp;

strTemp.Format( "000%x",*((unsigned   short   int   *)pVerValue));
strTranslation   =   strTemp.Right(4);
strTemp.Format( "000%x",*((unsigned   short   int   *)&pVerValue[2]));
strTranslation   +=   strTemp.Right(4);
//080404b0为中文,040904E4为英文

MessageBox(strTranslation);

//文件描述
strSubBlock.Format("\\StringFileInfo\\%s\\FileDescription",strTranslation);
VerQueryValue(pBlock,strSubBlock.GetBufferSetLength(256),(LPVOID*)&pVerValue,&nSize);
strSubBlock.ReleaseBuffer();
strTemp.Format( "文件描述:   %s ",pVerValue);
AfxMessageBox(strTemp);

//内部名称
strSubBlock.Format("\\StringFileInfo\\%s\\InternalName",strTranslation);
VerQueryValue(pBlock,strSubBlock.GetBufferSetLength(256),(LPVOID*)&pVerValue,&nSize);
strSubBlock.ReleaseBuffer();
strTemp.Format( "内部名称:   %s ",pVerValue);
AfxMessageBox(strTemp);

//合法版权
strSubBlock.Format("\\StringFileInfo\\%s\\LegalTradeMarks",strTranslation);
VerQueryValue(pBlock,strSubBlock.GetBufferSetLength(256),(LPVOID*)&pVerValue,&nSize);
strSubBlock.ReleaseBuffer();
strTemp.Format( "合法版权:   %s ",pVerValue);
AfxMessageBox(strTemp);

//原始文件名
strSubBlock.Format("\\StringFileInfo\\%s\\OriginalFileName",strTranslation);
VerQueryValue(pBlock,strSubBlock.GetBufferSetLength(256),(LPVOID*)&pVerValue,&nSize);
strSubBlock.ReleaseBuffer();
strTemp.Format( "原始文件名:   %s ",pVerValue);
AfxMessageBox(strTemp);

//产品名称
strSubBlock.Format("\\StringFileInfo\\%s\\ProductName",strTranslation);
VerQueryValue(pBlock,strSubBlock.GetBufferSetLength(256),(LPVOID*)&pVerValue,&nSize);
strSubBlock.ReleaseBuffer();
strTemp.Format("产品名称:   %s ",pVerValue);
AfxMessageBox(strTemp);

//产品版本
strSubBlock.Format("\\StringFileInfo\\%s\\ProductVersion",strTranslation);
VerQueryValue(pBlock,strSubBlock.GetBufferSetLength(256),(LPVOID*)&pVerValue,&nSize);
strSubBlock.ReleaseBuffer();
strTemp.Format("产品版本:   %s ",pVerValue);
AfxMessageBox(strTemp);

//版权
strSubBlock.Format("\\StringFileInfo\\%s\\LegalCopyright",strTranslation);
VerQueryValue(pBlock,strSubBlock.GetBufferSetLength(256),(LPVOID*)&pVerValue,&nSize);
strSubBlock.ReleaseBuffer();
strTemp.Format("版权:   %s ",pVerValue);
AfxMessageBox(strTemp);

//公司名
strSubBlock.Format("\\StringFileInfo\\%s\\CompanyName",strTranslation);
VerQueryValue(pBlock,strSubBlock.GetBufferSetLength(256),(LPVOID*)&pVerValue,&nSize);
strSubBlock.ReleaseBuffer();
strTemp.Format("公司名:   %s ",pVerValue);
AfxMessageBox(strTemp);

free(pBlock);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: