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

C# 如何从Exe或DLL字节数组/内存流中提取图标?,c#,dll,icons,exe,extract,C#,Dll,Icons,Exe,Extract,我需要从.exe和.dll文件流中直接获取图标,而不需要临时文件 此文件流从MSI包“图标”表中获取 我能够使用以下代码成功地从MSI包“Icon”表的“.ico”文件流中提取图标: public static Icon BytesToIcon(byte[] bytes) { using (MemoryStream ms = new MemoryStream(bytes)) { return new Icon(ms); } } 但我不知道如何从.exe和.dl

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

此文件流从MSI包“图标”表中获取

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

public static Icon BytesToIcon(byte[] bytes)
{
    using (MemoryStream ms = new MemoryStream(bytes))
    {
     return new Icon(ms);
    }
}
但我不知道如何从.exe和.dll文件流中直接读取图标。请帮我看看正确的方向

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

另一个类似的问题是关于“Icon.ExtractAssociatedIcon(filePath)” 它不适合我,因为没有文件路径

这不是重复的,因为类似的问题由于主持人的错误被标记为重复。 更新: 被主持人“L.B”错误地标记为“重复”。主持人并没有检查更新后的问题,我澄清了“为什么它不是真的”一个重复。不幸的是,该网站不允许与用户联系,并且在问题被某人自己认为是重复的情况下,该问题将被破坏,没有上诉的机会。

我找到了一个完全符合我要求的网站。 库具有将.exe/.dll作为内存流加载的方法。 我可以将字节[]数组转换为内存流对象,如下所示:

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
}
MemoryStream stream=新的MemoryStream(myByteArray);
//然后使用IconLib加载方法加载该MemoryStream:
多图标多图标=新的多图标();
多图标加载(流)
//迭代索引0下的不同分辨率图标
列表图标列表=新列表();
foreach(多图标中的图标图像[0])
{
iconList.addiconimage.Icon
}

可能重复的不重复,仔细阅读问题全文一些愚蠢的人在没有解释的情况下否决了投票,“足够勇敢”。这是你的问题的重复(我投票重新开始,因为那不是另一个问题的重复)。正确的做法是编辑暂停的问题,不要再问。嗨,非常感谢。我已经编辑了那个问题,在那之后的几天里,它仍然被标记为重复。似乎没有人重新审视它,也许已经迷失在历史的问题中。我只支持遵循正确的程序,当然,如果这些程序有效的话。我之所以再次打开此问题-是因为它仍然标记为重复,并且我已经找到了问题的答案,我想在这里分享,以防有人会遇到与我相同的问题。应该注意的是,MultiIcon只是在打开流之前将其复制到一个文件中。