"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo recuperar información de la versión de archivos DLL y EXE usando la API Win32 en C o C++?

¿Cómo puedo recuperar información de la versión de archivos DLL y EXE usando la API Win32 en C o C++?

Publicado el 2024-11-18
Navegar:792

How can I retrieve version information from DLLs and EXEs using Win32 API in C or C  ?

Obtención de información de versión para archivos DLL y EXE

Muchas aplicaciones requieren la capacidad de recuperar información de versión de archivos. Esta información se utiliza con fines de visualización, como mostrar el número de versión en el cuadro de diálogo de propiedades.

La API de Win32 proporciona varias funciones que se pueden utilizar para obtener información de la versión. Un enfoque común es utilizar la API GetFileVersionInfo.

Usar GetFileVersionInfo

La función GetFileVersionInfo recupera información sobre los recursos de la versión de un archivo. Los pasos necesarios para usar esta función son:

  1. Llame a GetFileVersionInfo con la ruta del archivo y un puntero a una variable DWORD que recibirá el identificador de la información de la versión.
  2. Llame a GetFileVersionInfoSize con la ruta del archivo y el identificador del paso 1 para determinar el tamaño de la información de la versión.
  3. Asigne un búfer del tamaño recuperado en el paso 2.
  4. Llame a GetFileVersionInfo nuevamente con la ruta del archivo, el identificador, el tamaño y el puntero al búfer del paso 3 para recuperar la información de la versión.

Extrayendo datos de la versión

Una vez recuperada la información de la versión, puede utilizar la función VerQueryValue para extraer información específica. El siguiente código de muestra demuestra cómo extraer la versión del producto y los números de versión del archivo:

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
                );
            }
        }
    }
}

Al seguir estos pasos, puede obtener mediante programación la versión del producto y los números de versión del archivo para archivos DLL o EXE utilizando las API nativas de Win32 en C o C.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3