应用程序清单通常嵌入在EXE和DLL中,具有讽刺意味的是,它们指定了EXE或DLL所依赖的程序集。
程序集清单可以嵌入在DLL中,也可以作为单独的文件存储在磁盘上,给程序集一个标识和一组资源:包括dll、激活免费的COM对象和窗口类。
如果程序集的名称是dll的名称,则相同的清单最终被用作应用程序清单来确定dll的依赖关系,并且用作程序集清单来查看程序集导出的内容。对于本机程序集来说,这个选项似乎真的很疯狂,通常最好创建一个名称复杂的程序集,例如company.product.module,然后只有一个简单的module.dll作为其条目。
看起来我需要同时遵循以下两点:
作为 DLL 中的资源,程序集可供 DLL 私有使用。程序集清单不能作为 EXE 的资源包含在内。EXE 文件可以将应用程序清单作为资源包含在内。
(信息来源这里)。因此,似乎 可执行文件 在资源中嵌入了 应用程序清单,而 库 (DLL) 则具有 程序集清单。由于它们都是 PE (可移植可执行文件),我需要解析这两种类型。