1

TSream を使用してファイル (exe または dll) から VersionInfo を読み取る必要があります。

ファイルがメモリ (TMemoryStream) にあり、この情報を取得するためにファイルをディスクに書きたくないため、Windows API GetFileVersionInfo を使用できません。いくつかのパフォーマンス制限があります。

誰かが私を助けることができますか?

4

2 に答える 2

3

生のファイル データがメモリ内にある場合、Win32 API はファイルのバージョン リソースを見つけるのに役立ちません。ファイルの PE ヘッダーを手動で読み取って解釈し、ファイルのリソース テーブルを見つけてから、テーブルをループして目的のバージョン リソースを探す必要があります。見つかったら、Win32 APIVerQueryValue()関数を使用して、リソース内の値の一部 (すべてではない) にアクセスできます。実行時に確立さVerQueryValue()れるルックアップに内部的に依存しているためです。GetFileVersionInfo()ただし、VS_FIXEDFILEINFOたとえば構造体へのアクセスは、GetFileVersionInfo()最初に呼び出さなくても問題なく機能します。

于 2013-05-07T18:53:57.847 に答える