저장소/VC++
[Win32 API] File Version 확인
MindGear
2011. 2. 22. 14:52
파일 버전만 필요로 할 때가 있으려나...
간단한 파일 버전 확인 방법을 정리한다.
버전 확인 외에 다른 용도는 없는 것 같기도 하고...
버전만 확인할 때 쓰면 되겠다.
간단한 파일 버전 확인 방법을 정리한다.
#includeVerQueryValue의 두 번째 인자인 lpSubBlock의 다른 사용 예로 VS_FIXEDFILEINFO 를 얻어 버전 정보를 확인할 수 있다.#pragma comment(lib, "version.lib") int GetFileVersion(LPCTSTR _lpszFilePath, LPTSTR _lpszBuf, DWORD _cchBuf) { if( NULL == _lpszFilePath || NULL == _lpszBuf ) { return -1; } DWORD dwHandle = 0; DWORD dwSize = 0; dwSize = ::GetFileVersionInfoSize(_lpszFilePath, &dwHandle); if(0 == dwSize) return -1; BYTE* pBlockData = new BYTE[dwSize]; ZeroMemory(pBlockData, dwSize); if(FALSE == ::GetFileVersionInfo(_lpszFilePath, dwHandle, dwSize, pBlockData)) { delete [] pBlockData; return -1; } // File Version VS_FIXEDFILEINFO* pVerInfo = NULL; UINT uLen = 0; if(FALSE == ::VerQueryValue(pBlockData, _T("\\"), (LPVOID*)&pVerInfo, &uLen)) { delete [] pBlockData; return -1; } StringCchPrintf(_lpszBuf, _cchBuf, _T("%d.%d.%d.%d"), HIWORD(pVerInfo->dwFileVersionMS), // Major LOWORD(pVerInfo->dwFileVersionMS), // Minor HIWORD(pVerInfo->dwFileVersionLS), // Release LOWORD(pVerInfo->dwFileVersionLS)); // Test delete [] pBlockData; return 0; }
버전 확인 외에 다른 용도는 없는 것 같기도 하고...
버전만 확인할 때 쓰면 되겠다.