如何以编程方式确定DLL是管理还是非管理?

时间:2013-03-29 15:34:41

标签: .net managed

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

1 个答案:

答案 0 :(得分:4)

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

但是,如果您想更严格地确定这一点,则需要自己检查PE头以获取相应的信息。这个article describes the process详细说明,但需要检查DLL的PE头的IMAGE_OPTIONAL_HEADER结构。