【问题标题】:How to extract Icons from Exe or DLL byte array / memory stream?如何从 Exe 或 DLL 字节数组/内存流中提取图标?
【发布时间】:2015-08-17 09:57:16
【问题描述】:

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

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

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

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

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

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

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

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

更新: My question 被版主“L.B”错误地标记为“重复”。版主没有通过我对“为什么它实际上不是”重复的澄清来检查更新的问题。不幸的是,网站不允许联系用户,并且在有人根据自己的想法将问题标记为重复后 - 该问题将被破坏而没有上诉的机会。

【问题讨论】:

  • 不重复,仔细阅读问题全文
  • 一些愚蠢的人不加解释地拒绝投票,“足够勇敢”。
  • TI 是 your 问题的副本(我投票决定重新打开,因为 that 不是另一个问题的副本)。 Per the Help centre 正确的做法是编辑暂停的问题,不要再问了。
  • 您好,非常感谢。我已经编辑了那个问题,但在那之后的几天里它仍然被标记为重复。似乎没有人重新查看它,并且可能已经迷失在历史问题中。当然,我只是为了遵循正确的程序,如果这些程序有效的话。为什么我再次打开这个问题 - 因为它仍然被标记为重复,我已经找到了我的问题的答案,我想在这里分享,以防有人会遇到和我一样的问题。

标签: c# dll icons exe extract


【解决方案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
}

【讨论】:

  • 需要注意的是,MultiIcon 只是在打开文件之前将流复制到文件中。
猜你喜欢
  • 1970-01-01
  • 2010-12-24
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 2014-07-04
  • 1970-01-01
  • 2019-08-15
相关资源
最近更新 更多