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

时间:2017-06-05 18:59:23

标签: c# arrays file version

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

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

有没有办法读取文件的FileVersion,因为我有文件内容的字节,而不将文件写入磁盘?

2 个答案:

答案 0 :(得分:0)

不幸的是,在经过大量挖掘,查看.NET Core源代码,可用的Javascript库等之后,我认为这并不容易(或者根本不可能),并且不值得痛苦地解决。

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

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

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

答案 1 :(得分:0)

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

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