Maison > développement back-end > C++ > le corps du texte

Comment puis-je récupérer les informations de version des DLL et des EXE à l'aide de l'API Win32 en C ou C ?

DDD
Libérer: 2024-11-01 08:23:02
original
435 Les gens l'ont consulté

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

Obtention des informations de version pour les DLL et les EXE

De nombreuses applications nécessitent la possibilité de récupérer les informations de version à partir de fichiers. Ces informations sont utilisées à des fins d'affichage, par exemple pour afficher le numéro de version dans la boîte de dialogue des propriétés.

L'API Win32 fournit plusieurs fonctions qui peuvent être utilisées pour obtenir des informations sur la version. Une approche courante consiste à utiliser l'API GetFileVersionInfo.

Utilisation de GetFileVersionInfo

La fonction GetFileVersionInfo récupère des informations sur les ressources de version d'un fichier. Les étapes impliquées dans l'utilisation de cette fonction sont :

  1. Appelez GetFileVersionInfo avec le chemin du fichier et un pointeur vers une variable DWORD qui recevra le handle des informations de version.
  2. Appelez GetFileVersionInfoSize avec le chemin du fichier et le handle de l'étape 1 pour déterminer la taille des informations de version.
  3. Allouez un tampon de la taille récupérée à l'étape 2.
  4. Appelez à nouveau GetFileVersionInfo avec le chemin du fichier, handle , la taille et le pointeur vers le tampon de l'étape 3 pour récupérer les informations de version.

Extraction des données de version

Une fois les informations de version récupérées, vous pouvez utiliser la fonction VerQueryValue pour extraire informations spécifiques. L'exemple de code suivant montre comment extraire la version du produit et les numéros de version des fichiers :

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
                );
            }
        }
    }
}
Copier après la connexion

En suivant ces étapes, vous pouvez obtenir par programme la version du produit et les numéros de version des fichiers pour les DLL ou les fichiers EXE à l'aide des API natives Win32. en C ou C.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!