„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich Versionsinformationen von DLLs und EXEs mithilfe der Win32-API in C oder C++ abrufen?

Wie kann ich Versionsinformationen von DLLs und EXEs mithilfe der Win32-API in C oder C++ abrufen?

Veröffentlicht am 18.11.2024
Durchsuche:487

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

Versionsinformationen für DLLs und EXEs abrufen

Viele Anwendungen erfordern die Möglichkeit, Versionsinformationen aus Dateien abzurufen. Diese Informationen werden zu Anzeigezwecken verwendet, beispielsweise zum Anzeigen der Versionsnummer im Eigenschaftendialogfeld.

Die Win32-API bietet mehrere Funktionen, die zum Abrufen von Versionsinformationen verwendet werden können. Ein gängiger Ansatz ist die Verwendung der GetFileVersionInfo-API.

Verwenden von GetFileVersionInfo

Die GetFileVersionInfo-Funktion ruft Informationen über die Versionsressourcen einer Datei ab. Die Schritte zur Verwendung dieser Funktion sind:

  1. GetFileVersionInfo mit dem Dateipfad und einem Zeiger auf eine DWORD-Variable aufrufen, die das Handle für die Versionsinformationen erhält.
  2. GetFileVersionInfoSize aufrufen mit den Dateipfad und das Handle aus Schritt 1, um die Größe der Versionsinformationen zu bestimmen.
  3. Ordnen Sie einen Puffer der in Schritt abgerufenen Größe zu 2.
  4. Rufen Sie GetFileVersionInfo erneut mit dem Dateipfad, dem Handle, der Größe und dem Zeiger auf den Puffer aus Schritt 3 auf, um die Versionsinformationen abzurufen.

Versionsdaten extrahieren

Sobald die Versionsinformationen abgerufen wurden, können Sie die Funktion „VerQueryValue“ verwenden, um bestimmte Informationen zu extrahieren. Der folgende Beispielcode zeigt, wie die Produktversions- und Dateiversionsnummern extrahiert werden:

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

Durch Befolgen dieser Schritte können Sie die Produktversion und Dateiversionsnummern für DLLs oder EXE-Dateien mithilfe nativer Win32-APIs in C oder C programmgesteuert abrufen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3