본문 바로가기
C & C++/C & C++

파일에서 버전 정보 얻어오기

by izen8 2011. 10. 25.
반응형
CString TestDlg::GetAppVersion(CString fileName)
{
        BSTR bstrFilePath
= fileName.AllocSysString();

       
CString strVersion = L"";
        DWORD dwHdlDest
;
        DWORD dwSizeDest
;

        dwSizeDest
= GetFileVersionInfoSize(
               
(LPWSTR)bstrFilePath,  //버전을 알고자 하는 파일의 경로
               
&dwHdlDest);
       
if (dwSizeDest > 0)
       
{
                BYTE
* pDestData = new BYTE[dwSizeDest + 1];
               
if (GetFileVersionInfo(
                       
(LPWSTR)bstrFilePath, //버전을 알고자 하는 파일의 경로
                        dwHdlDest
,
                        dwSizeDest
,
                        pDestData
))
               
{
                        VS_FIXEDFILEINFO
* pvsInfo;
                        UINT uLen
;
                       
if (VerQueryValue(pDestData, _T("\\"), (void**)&pvsInfo, &uLen))

                       
{
                                strVersion
.Format(L"%d.%d.%d.%d", (pvsInfo->dwFileVersionMS / 65536),
                                       
(pvsInfo->dwFileVersionMS % 65536), (pvsInfo->dwFileVersionLS / 65536),
                                       
(pvsInfo->dwFileVersionLS % 65536));

                       
}
               
}

               
delete [] pDestData;
       
}

       
SysFreeString(bstrFilePath);

       
return strVersion;
       
}
반응형

댓글