如何获取存储在内存中的可执行文件的 FileVersion 信息作为字节数组?

How can I get the FileVersion information of an executable stored in memory as an array of bytes?

我需要读取可执行文件的 FileVersion。问题是我在磁盘上没有实际文件,只有一个字节数组。 FileVersion API 只有一个 GetVersionInfo(string fileName) 方法,它没有任何从文件中获取版本的方法。

我尝试使用反编译器查看源代码,但它看起来比简单的 copy/paste 更复杂。

有什么方法可以读取文件的 FileVersion,假设我有文件内容的字节,而不将文件写入磁盘?

不幸的是,经过大量挖掘和查看 .NET Core 源代码、可用的 Javascript 库等,我认为这并不容易(或根本)不可能,不值得为此付出痛苦搞清楚。

相反,我采用了更简单的方法:

  • 将文件写入磁盘的某个临时位置
  • 从磁盘文件读取版本
  • 删除文件

代码是简单直接的 .NET 代码,不需要花哨的技巧或复杂的 JS 库。

这对我有用。可能值得注意的是,我的 byteArray 来自作为嵌入式资源的 .NET 程序集。

Dim assembly = System.Reflection.Assembly.Load(byteArray)
Dim currentVersion = assembly.GetName.Version