ホームページ  >  記事  >  バックエンド開発  >  Win32 API を使用して DLL および EXE からバージョン情報を取得するにはどうすればよいですか?

Win32 API を使用して DLL および EXE からバージョン情報を取得するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-01 11:22:46360ブラウズ

How to Retrieve Version Information from DLLs and EXEs using Win32 APIs?

Win32 API を使用した DLL および EXE からのバージョン情報の取得

DLL および EXE を扱う場合、そのバージョンを取得する必要が生じることがよくあります。数字。 Windows バージョンとは対照的に、この 4 つの部分からなるドット付きバージョン (x.x.x.x など) には、ファイルのプロパティの [詳細] タブからアクセスできます。

解決策: GetFileVersionInfo API

プログラムでバージョン情報を取得する鍵は、GetFileVersionInfo API にあります。詳細なドキュメントは、Microsoft の MSDN Web サイトの「バージョン情報の使用」という適切なタイトルで入手できます。

サンプル実装

C または C では、一般的な実装は次のようになります。 code:

<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) {
                    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>

検査する DLL または EXE の実際のパスとファイル名で「szVersionFile」を調整することを忘れないでください。

以上がWin32 API を使用して DLL および EXE からバージョン情報を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。