如何获得程序集dll的处理器体系结构?

时间:2010-11-15 15:58:09

标签: c# .net architecture dll processor

我可以通过在c#中以编程方式加载dll来获得处理器架构吗?

有没有可以做到这一点的课程?

我需要知道dll是x86,x64,MSIL等。

3 个答案:

答案 0 :(得分:9)

假设您只查看.net程序集,可以使用CorFlags.exe查看图像的标题。

This blog post解释了确定如何阅读结果的用法。摘录:

  

用法:Corflags.exe程序集[选项]

     

如果未指定选项,则显示给定图像的标志。

     

...

     

以下是标题的每个组成部分:

     

版本:包含二进制文件所使用的.NET Redist版本   建。

     

CLR标题:2.0表示.Net 1.0或.Net 1.1(Everett)图像,而2.5表示.Net 2.0(Whidbey)图像。

     

CorFlags:这是通过OR'g特定的标志来计算的,以指示是否   图像是ILONLY,它的位数等等   由装载机使用。非正式:管理   允许图像包含原生图像   码。成为“anycpu”的图像应该是   只包含IL。

     

32BIT:即使您的图像只包含IL,它仍然可能   有平台依赖,32BIT   flag用于区分“x86”   来自“anycpu”图像的图像。 64位   图像是由事实区分的   他们的PE型为PE32 +   最有趣的方面是PE和标头的32BIT标志。   这些组合起来指定组件   类型。这是他们的样子   喜欢:

     
      
  • anycpu:PE = PE32和32BIT = 0
  •   
  • x86:PE = PE32且32BIT = 1
  •   
  • 64位:PE = PE32 +和32BIT = 0
  •   

答案 1 :(得分:1)

试图通过加载程序集来找出鸡蛋和鸡蛋的主张。如果你没有得到BadImageFormatException,那么arch是合适的,你不再关心它是什么。如果你确实得到了异常,那么程序的配置是错误的。你无法在代码中做到这一点。

答案 2 :(得分:0)

您还可以使用FileStream读取程序集文件。 Windows可执行文件的格式在Microsoft pe / coff规范中指定。你可以在这里阅读:

http://www.microsoft.com/whdc/system/platform/firmware/pecoff.mspx