"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 obtener información de versión mediante programación para archivos DLL y EXE?

¿Cómo obtener información de versión mediante programación para archivos DLL y EXE?

Publicado el 2024-11-10
Navegar:544

How to Programmatically Get Version Information for DLLs and EXEs?

Cómo obtener información de versión mediante programación para archivos DLL y EXE

En el ámbito del desarrollo de software, a menudo resulta necesario recuperar la información de versión asociada con bibliotecas de enlaces dinámicos ( DLL) y programas ejecutables (EXE). Al utilizar las API nativas de Win32 accesibles a través de C o C, los desarrolladores pueden adquirir sin problemas las versiones de productos y archivos de estas entidades ejecutables.

La API GetFileVersionInfo: Desbloqueo de información de versión

La clave para desbloquear información de versión se encuentra en la API GetFileVersionInfo. Esta poderosa función llena un búfer con datos pertenecientes al archivo DLL o EXE especificado. Profundicemos en las complejidades de su uso:

  • Determinar el tamaño del archivo: GetFileVersionInfoSize guía la optimización de la asignación de memoria al proporcionar el tamaño de búfer requerido.
  • Recuperar datos de la versión: GetFileVersionInfo otorga acceso a la información de la versión almacenada de forma segura dentro del búfer.
  • Consulta del búfer: VerQueryValue extrae un subconjunto de los datos de la versión, coincidiendo con los criterios predefinidos del usuario.
  • Interpretación de los números de versión: comprendiendo el subyacente estructura de la información de la versión, los desarrolladores pueden analizar con precisión el número de versión con puntos de cuatro partes (x.x.x.x) a partir de los valores dwFileVersionMS y dwFileVersionLS.

Ejemplificando la recuperación de versiones en la práctica

El siguiente código El ejemplo ilustra la aplicación práctica de la API GetFileVersionInfo:

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

En conclusión, la API GetFileVersionInfo proporciona una solución integral para obtener información de versión mediante programación de archivos DLL y EXE. Al aprovechar esta funcionalidad, los desarrolladores pueden automatizar las tareas de recuperación de versiones, garantizando precisión y eficiencia en sus esfuerzos de desarrollo de software.

Ú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