2009-09-25 77 views
0

还有所有支持的处理器架构这里的一个枚举:http://msdn.microsoft.com/en-us/library/system.reflection.processorarchitecture.aspx.NET框架得到运行的处理器架构

有没有什么办法,以确定哪一个对应的运行环境? System.Reflection.Assembly.GetExecutingAssembly()。ProcessorArchitecture返回MSIL - 显然是错误的。

编辑:Bojan Resnik发布了一个答案并将其删除。我看到我需要从我得到的部分追踪中进行一些澄清。

程序集需要在多个体系结构上运行,并根据正在运行的进程接受的汇编指令执行不同的操作。实质上,我需要选择加载哪个版本的本机DLL。每个架构我都有一个。

+0

Dupe:http://stackoverflow.com/questions/767613/identifying-the-cpu-architecture-type-using-c – 2009-09-25 16:46:16

+0

不是一个笨蛋。如果我在WOW中运行,我希望x86返回不是x64。 – Joshua 2009-09-25 17:28:07

+0

实际上您是否需要区分所有这些体系结构,还是仅限于x86/x64? – 2009-09-29 22:52:09

回答

1

P /调用GetSystemInfo是微不足道从.Net和比WMI重量轻得多。同样,它返回进程看到的体系结构,所以在x64机器上,WOW进程将看到x86,而本机进程将看到x64。

0

以下是您可能想尝试的几个WMI设置。我目前没有64位系统,但应该很容易检查。源代码如下。请注意,您可能最终不得不使用一组调用(例如,一个发现哇,另一个发现本机32与64等)。

另外,请查看http://social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/b1cfef99-5247-47c5-93d4-31eb6849df48了解更多讨论。

using System; 
using System.Management; 
class Program 
{ 
    static void Main(string[] args) 
    { 
     foreach (ManagementBaseObject o in new ManagementClass("Win32_OperatingSystem").GetInstances()) 
     { 
      Console.WriteLine("Win32_OperatingSystem.OSArchitecture = " + o.Properties["OSArchitecture"].Value); 
      break; 
     } 
     foreach (ManagementBaseObject o in new ManagementClass("Win32_ComputerSystem").GetInstances()) 
     { 
      Console.WriteLine("Win32_ComputerSystem.SystemType = " + o.Properties["SystemType"].Value); 
      break; 
     } 
     Console.ReadKey(); 
    } 
}