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);
from:http://www.xiaozhou.net/cooldog/article.asp?id=55
posted on 2007-01-23 11:20
我風 閱讀(385)
評論(0) 編輯 收藏 引用