Heim >Backend-Entwicklung >C++ >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?

DDD
DDDOriginal
2024-11-01 08:23:02513Durchsuche

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 zur Anzeige 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.

GetFileVersionInfo verwenden

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. Reservieren Sie einen Puffer mit der in Schritt 2 abgerufenen Größe.
  4. Rufen Sie GetFileVersionInfo erneut mit dem Dateipfad und dem Handle auf , Größe und Zeiger auf den Puffer aus Schritt 3, um die Versionsinformationen abzurufen.

Versionsdaten extrahieren

Sobald die Versionsinformationen abgerufen wurden, können Sie sie mit der Funktion „VerQueryValue“ extrahieren spezifische Informationen. 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 Produktversions- und Dateiversionsnummern für DLLs oder EXE-Dateien mithilfe nativer Win32-APIs programmgesteuert abrufen in C oder C .

Das obige ist der detaillierte Inhalt vonWie kann ich Versionsinformationen von DLLs und EXEs mithilfe der Win32-API in C oder C abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn