>  기사  >  백엔드 개발  >  C 또는 C에서 프로그래밍 방식으로 DLL 또는 EXE 파일 버전을 검색하는 방법은 무엇입니까?

C 또는 C에서 프로그래밍 방식으로 DLL 또는 EXE 파일 버전을 검색하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-30 01:25:28314검색

How to Retrieve DLL or EXE File Versions Programmatically in C or C  ?

C 또는 C에서 프로그래밍 방식으로 DLL 또는 EXE 파일 버전을 검색하는 방법

종종 소프트웨어 문제를 해결하거나 파일 무결성을 확인할 때 다음과 같은 문제가 발생합니다. 특정 DLL 또는 EXE 파일에 대한 버전 정보를 얻는 데 필요합니다. C 및 C 개발자는 기본 Win32 API를 활용하여 이러한 버전 번호를 효과적으로 검색할 수 있습니다. 이 버전 번호는 일반적으로 파일 속성 창의 "세부 정보" 탭 아래에 네 부분으로 구성된 점 표기법(예: x.x.x.x)으로 표시됩니다.

이 작업을 수행하려면 GetFileVersionInfo API를 사용해야 합니다. MSDN에 설명된 대로 이 API는 지정된 파일과 관련된 버전 정보에 대한 액세스를 제공합니다. 이 API를 사용하여 개발자는 DLL 및 EXE의 제품 버전과 파일 버전을 얻을 수 있습니다.

다음 코드 샘플은 GetFileVersionInfoVerQueryValue:

<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) {
                    // DWORD is always 32 bits, regardless of system architecture
                    // Get the version numbers from dwFileVersionMS and dwFileVersionLS
                    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>
앞서 언급한 API와 코드 샘플을 활용하여 프로그래머는 DLL 또는 EXE 파일의 버전 정보를 쉽게 검색할 수 있습니다. 이 기능은 디버깅이나 자세한 파일 검사를 수행할 때 매우 유용합니다.

위 내용은 C 또는 C에서 프로그래밍 방식으로 DLL 또는 EXE 파일 버전을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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