"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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++ ?

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++ ?

Publié le 2024-11-18
Parcourir:422

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, le 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 des informations spécifiques. L'exemple de code suivant montre comment extraire la version du produit et les numéros de version du fichier :

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

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 .

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3