3

如何在程序中确定 DLL 是托管代码还是非托管代码?我们使用此代码来确保我们所有的托管 DLL 都是 MSIL。但它会在非托管 DLL 上引发异常,因此我需要一种方法来首先检查 DLL 是否被托管。

4

1 回答 1

4

最简单的选择很可能只是尝试按原样打开文件并捕获异常。任何非托管程序集都会在Assembly.LoadFrom.

但是,如果您想更严格地确定这一点,您需要自己检查 PE 标头以获取适当的信息。本文详细介绍了该过程,但需要检查DLL的PE头的IMAGE_OPTIONAL_HEADER结构。

于 2013-03-29T15:40:32.323 回答