REF : http://blog.youkuaiyun.com/sysprogram/article/details/6935214
- 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);