Heim > Backend-Entwicklung > C++ > Wie erhalte ich programmgesteuert Versionsinformationen für DLLs und EXEs?

Wie erhalte ich programmgesteuert Versionsinformationen für DLLs und EXEs?

Susan Sarandon
Freigeben: 2024-10-29 14:17:02
Original
478 Leute haben es durchsucht

How to Programmatically Get Version Information for DLLs and EXEs?

So erhalten Sie programmgesteuert Versionsinformationen für DLLs und EXE-Dateien

Im Bereich der Softwareentwicklung ist es häufig erforderlich, die Versionsinformationen abzurufen, die mit dynamischen Linkbibliotheken verknüpft sind ( DLLs) und ausführbaren Programmen (EXEs). Durch die Verwendung nativer Win32-APIs, auf die über C oder C zugegriffen werden kann, können Entwickler nahtlos die Produkt- und Dateiversionen dieser ausführbaren Einheiten erwerben.

Die GetFileVersionInfo-API: Versionsinformationen freischalten

Der Schlüssel zum Freischalten von Versionsinformationen liegt in der GetFileVersionInfo-API. Diese leistungsstarke Funktion füllt einen Puffer mit Daten, die sich auf die angegebene DLL- oder EXE-Datei beziehen. Lassen Sie uns in die Feinheiten seiner Verwendung eintauchen:

  • Bestimmen Sie die Dateigröße: GetFileVersionInfoSize leitet die Optimierung der Speicherzuweisung durch Bereitstellung der erforderlichen Puffergröße.
  • Abrufen von Versionsdaten: GetFileVersionInfo gewährt Zugriff auf die Versionsinformationen, die sicher im Puffer gespeichert sind.
  • Abfragen des Puffers: VerQueryValue extrahiert eine Teilmenge der Versionsdaten, die den vordefinierten Kriterien des Benutzers entspricht.
  • Interpretieren von Versionsnummern: Durch Verständnis des zugrundeliegenden Struktur der Versionsinformationen können Entwickler die vierteilige gepunktete Versionsnummer (x.x.x.x) aus den Werten dwFileVersionMS und dwFileVersionLS genau analysieren.

Beispiel für den Versionsabruf in der Praxis

Der folgende Code Das Beispiel veranschaulicht die praktische Anwendung der GetFileVersionInfo-API:

<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>
Nach dem Login kopieren

Zusammenfassend lässt sich sagen, dass die GetFileVersionInfo-API eine umfassende Lösung zum programmgesteuerten Abrufen von Versionsinformationen von DLLs und EXEs bietet. Durch die Nutzung dieser Funktionalität können Entwickler Aufgaben zum Abrufen von Versionen automatisieren und so Genauigkeit und Effizienz bei ihren Softwareentwicklungsbemühungen sicherstellen.

Das obige ist der detaillierte Inhalt vonWie erhalte ich programmgesteuert Versionsinformationen für DLLs und EXEs?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage