You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何加载16位NE格式可执行文件以提取其内部资源?

16位Windows可执行文件资源读取方案

LoadLibraryEx仅支持解析Win32标准PE格式可执行文件,16位Windows程序使用的是NE(New Executable)格式,系统加载器在识别到PE头缺失时会直接返回「非有效Win32可执行文件」错误,和你传入的加载参数无关,没有办法通过调整LoadLibraryEx参数实现16位文件加载。

你可以根据运行环境选择以下方案读取资源:

  • 自主解析NE格式(全平台通用):16位NE格式的结构规范完全公开,你可以直接读取二进制文件内容自行解析:
    1. 首先读取文件开头的IMAGE_DOS_HEADER结构,通过e_lfanew字段获取NE头的起始偏移
    2. 解析NE头,从中读取资源表的偏移和长度信息
    3. 按NE格式资源表的目录结构遍历读取所需资源即可,NE的资源组织逻辑和PE格式有较高相似性,适配成本很低
  • 16位兼容API(仅32位Windows可用):32位Windows保留了16位子系统的兼容thunk接口,可以直接调用FindResource16、LoadResource16、LockResource16系列API读取资源,也可以先调用LoadModule加载16位文件后再操作资源,该方案在64位Windows下无法使用,微软已经完全移除了64位系统的16位兼容层
  • 专用资源读取接口(限特定资源类型):如果只需要读取图标、版本信息这类标准资源,可以直接调用ExtractIcon、VerQueryValue等通用系统接口,这类接口底层已经做了NE格式兼容,不需要自行处理文件结构,但不支持自定义资源的遍历读取

64位Windows环境下没有原生系统API可以直接加载16位NE格式可执行文件,全类型资源读取的最优方案是自主解析文件结构。

内容的提问来源于stack exchange,提问作者IS4

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 00:06:03