获取文件版本信息
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);總結
- 上一篇: WriteFile写UNICODE字符串
- 下一篇: Debug Assertion Fail