프로그램/C++

파일(exe,dll) 의 버젼 읽기

네오류이 2021. 1. 15. 09:25
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
728x90
반응형

오늘은 exe파일이나 dll, ocx 등의 파일 버젼을 읽을 필요가 있게 됩니다.

 

그때 읽는 함수를 알려드리겠습니다. 현재 제가 사용하고 있는 소스입니다.

 

 

* 소스코드

 

// CString parm_path : 파일경로

// CString parm_filename : 파일명.확장자

CString Util::GetAppVersion( CString parm_path, CString parm_filename )

 

        DWORD dwHandle, dwLen; 

        UINT BufLen; 

        LPTSTR lpData; 

        VS_FIXEDFILEINFO *pFileInfo; 

        CString pgm_path, ret_version;

 

pgm_path.Format("%s\\%s", parm_path, parm_filename);

        dwLen = GetFileVersionInfoSize( (char *)(const char *)pgm_path, &dwHandle ); 

        if (!dwLen)   return ""; 

         

        lpData = (LPTSTR) malloc (dwLen); 

        if (!lpData)   return ""; 

        if( !GetFileVersionInfo( (char *)(const char *)pgm_path, dwHandle, dwLen, lpData ) ) {   

                free (lpData); 

                return ""; 

        } 

         

        if( VerQueryValue( lpData, "\\\\", (LPVOID*) &pFileInfo, (PUINT)&BufLen ) )  {   

ret_version.Format("%d.%d.%d.%d", 

HIWORD(pFileInfo->dwFileVersionMS), LOWORD(pFileInfo->dwFileVersionMS), HIWORD(pFileInfo->dwFileVersionLS), LOWORD(pFileInfo->dwFileVersionLS)

);

                //*MajorVersion = HIWORD(pFileInfo->dwFileVersionMS); 

                //*MinorVersion = LOWORD(pFileInfo->dwFileVersionMS); 

                //*BuildNumber = HIWORD(pFileInfo->dwFileVersionLS); 

                //*RevisionNumber = LOWORD(pFileInfo->dwFileVersionLS); 

                free (lpData); 

                return ret_version; 

        } 

         

        free (lpData); 

m_debug_str.Format("[GetAppVersion] %s %s %s", parm_path, parm_filename, ret_version); AddLog(m_debug_str);

 

        return ret_version; 

 

* 사용법

 

CString ver = GetAppVersion("c:\\폴더", "aaa.exe")'

 

 

GetAppVersion 함수는 고정적으로 넣어놓고, 호출만 하면 해당 파일의 버젼이 읽히게 됩니다.

 

참 쉽죠~~

 

#dll#EXE#GetFileVersionInfo#버전#읽기

728x90
반응형