Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich DLL- oder EXE-Dateiversionen programmgesteuert in C oder C abrufen?

Wie kann ich DLL- oder EXE-Dateiversionen programmgesteuert in C oder C abrufen?

Barbara Streisand
Barbara StreisandOriginal
2024-10-30 01:25:28314Durchsuche

How to Retrieve DLL or EXE File Versions Programmatically in C or C  ?

So rufen Sie DLL- oder EXE-Dateiversionen programmgesteuert in C oder C ab

Bei der Behebung von Softwareproblemen oder der Überprüfung der Dateiintegrität ist dies häufig der Fall erforderlich, um die Versionsinformationen für eine bestimmte DLL- oder EXE-Datei abzurufen. Durch die Verwendung nativer Win32-APIs können C- und C-Entwickler diese Versionsnummern effektiv abrufen, die normalerweise als vierteilige Punktnotation (z. B. x.x.x.x) auf der Registerkarte „Details“ im Eigenschaftenfenster der Datei angezeigt werden.

Um diese Aufgabe zu erfüllen, muss man die API GetFileVersionInfo verwenden. Wie auf MSDN dokumentiert, bietet diese API Zugriff auf Versionsinformationen, die mit der angegebenen Datei verknüpft sind. Mithilfe dieser API können Entwickler die Produktversion und Dateiversion von DLLs und EXEs abrufen.

Das folgende Codebeispiel zeigt, wie die Versionsinformationen mit GetFileVersionInfo und VerQueryValue:

<code class="c">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) {
                    // DWORD is always 32 bits, regardless of system architecture
                    // Get the version numbers from dwFileVersionMS and dwFileVersionLS
                    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>
Durch die Verwendung der oben genannten APIs und Codebeispiele können Programmierer mühelos die Versionsinformationen jeder DLL- oder EXE-Datei abrufen. Diese Fähigkeit erweist sich beim Debuggen oder der Durchführung detaillierter Dateiinspektionen als unschätzbar wertvoll.

Das obige ist der detaillierte Inhalt vonWie kann ich DLL- oder EXE-Dateiversionen programmgesteuert 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