如何获取存储在内存中的可执行文件的 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
我需要读取可执行文件的 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