如何从x86 .NET应用程序(反之亦然)获取AMD64程序集的PEKind和ImageFileMachine?

时间:2009-05-20 03:01:51

标签: .net portable-executable

我正在为我们的产品编写安装验证工具,我需要从几个已安装的程序集中检索一些PE信息。无论我们的产品安装在什么平台上,我们都会将AMD64,x86和MSIL程序集发送到某些位置,以便用户为这些平台创建部署项目。

问题在于,使用以下代码:

Module manifestModule = Assembly.LoadFile(fileName).ManifestModule;
ImageFileMachine m;
PortableExecutableKinds pe;
manifestModule.GetPEKind(out pe, out m);
如果应用程序以x86身份运行并尝试加载AMD64程序集或反之亦然,那么

Assembly.LoadFile(...)将会中断。

我发现这些相关但不完全:

1 个答案:

答案 0 :(得分:0)

尝试使用Assembly.ReflectionOnlyLoad。这将允许您将程序集加载到内存中 - 但不会在其中执行任何代码。这将允许加载x64程序集以在x86进程中进行反射。