如何得到指定文件的公司名称,文件描述,内部名称,合法版权,原始文件名,产品名称,产品版本等一系列信息

Q.EXE右击它的属性能看到描述:QQ2009这一项,

VerQueryValue:这个函数用于从版本资源中获取信息。调用这个函数前,必须先用GetFileVersionInfo函数获取版本资源信息。这个函数会检查资源信息,并将需要的数据复制到一个缓冲区里

"\" 获取文件的VS_FIXEDFILEINFO结构
  "\VarFileInfo\Translation" 获取文件的翻译表
  "\StringFileInfo\...." 获取文件的字串信息

GetFileVersionInfoSize

针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区

char*   szFileName   =   "C:\\EnochShen.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为英文 

//文件描述 
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); 

free(pBlock); 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值