我需要直接从.exe和.dll文件流中获取图标,而不需要临时文件。
此文件流是从MSI包“Icon”表中获得的。
我能够使用以下代码从MSI包“Icon”表中成功从“.ico”文件流中提取Icon:
public static Icon BytesToIcon(byte[] bytes)
{
using (MemoryStream ms = new MemoryStream(bytes))
{
return new Icon(ms);
}
}
但我不知道如何直接从.exe和.dll文件流中读取图标。请帮我看看正确的方向。
问题是关于从Byte [] fileStream中读取图标。 没有档案。目标是从该流中读取没有临时文件的图标。
其他类似的问题是关于“Icon.ExtractAssociatedIcon(filePath)” 它不适合我,因为没有文件路径。
更新: 主持人“L.B”错误地将 My question标记为“重复”。主持人没有检查更新的问题,我澄清了“为什么它实际上不是”重复。不幸的是,网站不允许与用户联系,并且在问题被他人自己的想法标记为重复之后 - 问题将被破坏而没有上诉机会。
答案 0 :(得分:-1)
我找到了一个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
}