"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > DLL 및 EXE에 대한 버전 정보를 프로그래밍 방식으로 얻는 방법은 무엇입니까?

DLL 및 EXE에 대한 버전 정보를 프로그래밍 방식으로 얻는 방법은 무엇입니까?

2024년 11월 10일에 게시됨
검색:367

How to Programmatically Get Version Information for DLLs and EXEs?

DLL 및 EXE에 대한 버전 정보를 프로그래밍 방식으로 얻는 방법

소프트웨어 개발 영역에서는 동적 링크 라이브러리( DLL) 및 실행 가능한 프로그램(EXE). C 또는 C를 통해 액세스할 수 있는 Win32 기본 API를 활용함으로써 개발자는 이러한 실행 가능 엔터티의 제품 및 파일 버전을 원활하게 얻을 수 있습니다.

GetFileVersionInfo API: 버전 정보 잠금 해제

버전 정보 잠금 해제의 핵심 GetFileVersionInfo API에 있습니다. 이 강력한 기능은 지정된 DLL 또는 EXE 파일과 관련된 데이터로 버퍼를 채웁니다. 복잡한 사용법을 자세히 살펴보겠습니다.

  • 파일 크기 결정: GetFileVersionInfoSize는 필수 버퍼 크기를 제공하여 메모리 할당 최적화를 안내합니다.
  • 버전 데이터 검색: GetFileVersionInfo 권한 부여 버퍼 내에 안전하게 저장된 버전 정보에 액세스합니다.
  • 버퍼 쿼리: VerQueryValue는 사용자가 미리 정의한 기준과 일치하는 버전 데이터의 하위 집합을 추출합니다.
  • 버전 번호 해석: 기본 버전을 이해함으로써 버전 정보의 구조를 통해 개발자는 dwFileVersionMS 및 dwFileVersionLS 값에서 점으로 구분된 네 부분으로 구성된 버전 번호(x.x.x.x)를 정확하게 구문 분석할 수 있습니다.

실제 버전 검색 예시

다음 코드 샘플은 GetFileVersionInfo API의 실제 적용을 보여줍니다.

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) {
                    // Parse the file version into a four-part dotted string
                    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;
}

결론적으로 GetFileVersionInfo API는 DLL 및 EXE에서 버전 정보를 프로그래밍 방식으로 얻기 위한 포괄적인 솔루션을 제공합니다. 개발자는 이 기능을 활용하여 버전 검색 작업을 자동화하여 소프트웨어 개발 노력의 정확성과 효율성을 보장할 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3