Maison >développement back-end >C++ >Comment obtenir par programme des informations sur la version des DLL et des EXE ?

Comment obtenir par programme des informations sur la version des DLL et des EXE ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-29 14:17:02483parcourir

How to Programmatically Get Version Information for DLLs and EXEs?

Comment obtenir par programme des informations de version pour les DLL et les EXE

Dans le domaine du développement logiciel, il devient souvent nécessaire de récupérer les informations de version associées aux bibliothèques de liens dynamiques ( DLL) et programmes exécutables (EXE). En utilisant les API natives Win32 accessibles via C ou C, les développeurs peuvent acquérir en toute transparence les versions de produit et de fichier de ces entités exécutables.

L'API GetFileVersionInfo : Déverrouillage des informations de version

La clé pour déverrouiller les informations de version réside dans l'API GetFileVersionInfo. Cette fonction puissante remplit un tampon avec les données relatives au fichier DLL ou EXE spécifié. Explorons les subtilités de son utilisation :

  • Déterminez la taille du fichier : GetFileVersionInfoSize guide l'optimisation de l'allocation de mémoire en fournissant la taille de tampon requise.
  • Récupération des données de version : GetFileVersionInfo accorde accès aux informations de version stockées en toute sécurité dans le tampon.
  • Interrogation du tampon : VerQueryValue extrait un sous-ensemble des données de version, correspondant aux critères prédéfinis de l'utilisateur.
  • Interprétation des numéros de version : en comprenant le sous-jacent structure des informations de version, les développeurs peuvent analyser avec précision le numéro de version en quatre parties (x.x.x.x) à partir des valeurs dwFileVersionMS et dwFileVersionLS.

Exemple de récupération de version en pratique

Le code suivant L'exemple illustre l'application pratique de l'API GetFileVersionInfo :

<code class="python">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;
}</code>

En conclusion, l'API GetFileVersionInfo fournit une solution complète pour obtenir par programme des informations de version à partir de DLL et d'EXE. En exploitant cette fonctionnalité, les développeurs peuvent automatiser les tâches de récupération de versions, garantissant ainsi la précision et l'efficacité de leurs efforts de développement logiciel.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn