>백엔드 개발 >C++ >Win32 API를 사용하여 DLL 및 EXE에서 버전 정보를 검색하는 방법은 무엇입니까?

Win32 API를 사용하여 DLL 및 EXE에서 버전 정보를 검색하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-01 11:22:46456검색

How to Retrieve Version Information from DLLs and EXEs using Win32 APIs?

Win32 API를 사용하여 DLL 및 EXE에서 버전 정보 검색

DLL 및 EXE를 처리할 때 해당 버전을 구해야 하는 경우가 종종 있습니다. 숫자. Windows 버전과 달리 이 네 부분으로 구성된 점선 버전(예: x.x.x.x)은 해당 속성에 있는 파일의 "세부 정보" 탭을 통해 액세스할 수 있습니다.

해결책: GetFileVersionInfo API

프로그래밍 방식으로 버전 정보를 검색하는 핵심은 GetFileVersionInfo API에 있습니다. 자세한 문서는 Microsoft의 MSDN 웹사이트에서 "버전 정보 사용"이라는 적절한 제목으로 제공됩니다.

샘플 구현

C 또는 C에서 일반적인 구현은 다음과 유사할 수 있습니다. 코드:

<code class="c++">DWORD verHandle = 0;
UINT size = 0;
LPBYTE lpBuffer = NULL;
DWORD verSize = GetFileVersionInfoSize(szVersionFile, &verHandle);

if (verSize != NULL) {
    LPSTR verData = new char[verSize];

    if (GetFileVersionInfo(szVersionFile, verHandle, verSize, verData)) {
        if (VerQueryValue(verData, "\", (VOID FAR* FAR*)&lpBuffer, &size)) {
            if (size) {
                VS_FIXEDFILEINFO *verInfo = (VS_FIXEDFILEINFO *)lpBuffer;
                if (verInfo->dwSignature == 0xfeef04bd) {
                    TRACE( "File Version: %d.%d.%d.%d\n",
                    ( verInfo->dwFileVersionMS >> 16 ) & 0xffff,
                    ( verInfo->dwFileVersionMS >>  0 ) & 0xffff,
                    ( verInfo->dwFileVersionLS >> 16 ) & 0xffff,
                    ( verInfo->dwFileVersionLS >>  0 ) & 0xffff
                    );
                }
            }
        }
    }
    delete[] verData;
}</code>

검사하려는 DLL 또는 EXE의 실제 경로와 파일 이름으로 'szVersionFile'을 조정해야 합니다.

위 내용은 Win32 API를 사용하여 DLL 및 EXE에서 버전 정보를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.