如何从 Exe 或 DLL 字节数组/内存流中提取图标?

How to extract Icons from Exe or DLL byte array / memory stream?

我需要直接从 .exe 和 .dll 文件流中获取图标,而不需要临时文件。

此文件流取自MSI包"Icon" table.

我能够使用以下代码从 MSI 包 "Icon" table 的“.ico”文件流中成功提取图标:

public static Icon BytesToIcon(byte[] bytes)
{
    using (MemoryStream ms = new MemoryStream(bytes))
    {
     return new Icon(ms);
    }
}

但我不知道如何直接从 .exe 和 .dll 文件流中读取图标。请帮助我寻找正确的方向。

问题是关于从 Byte[] 文件流读取图标。 没有文件。目标是在没有临时文件的情况下从该流中读取图标。

其他类似问题是关于"Icon.ExtractAssociatedIcon(filePath)" 对我来说不是suitable因为没有文件路径

这不是重复问题,因为由于版主的错误,类似问题被标记为重复问题。

更新: My question 被版主 "L.B" 错误标记为 "duplicate"。主持人没有检查更新的问题以及我对 "why it wasn't actually" 重复的澄清。不幸的是,网站不允许联系用户,并且在有人根据自己的想法将问题标记为重复后 - 问题将被破坏,没有上诉的机会。

我发现 project library 可以完全按照我的要求进行所有操作。 该库具有将 .exe/.dll 作为内存流加载的方法。 我可以将我的 byte[] 数组转换为内存流对象,如下所示:

MemoryStream stream = new MemoryStream(myByteArray);

//and then load that MemoryStream with IconLib Load method:

MultiIcon multiIcon = new MultiIcon();
multiIcon.Load(stream)

//Iterate through different resolution icons under index 0
List<Icon> iconList = new List<Icon>();
foreach(IconImage iconImage in multiIcon[0])
{
 iconList.Add iconImage.Icon
}