代码之家  ›  专栏  ›  技术社区  ›  Joshua

.NET Framework正在运行的处理器体系结构

  •  0
  • Joshua  · 技术社区  · 15 年前

    http://msdn.microsoft.com/en-us/library/system.reflection.processorarchitecture.aspx

    有没有办法确定哪一个对应于正在运行的环境?System.Reflection.Assembly.GetExecutionGassembly().ProcessorArchitecture返回MSIL——显然是错误的。

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

    2 回复  |  直到 15 年前
        1
  •  2
  •   Stephen Martin    15 年前

    P/调用 GetSystemInfo 在.Net中是微不足道的,并且比WMI的重量轻得多。此外,它还返回进程所看到的体系结构,因此在x64机器上,WOW进程将看到x86,而本机进程将看到x64。

        2
  •  -1
  •   Justin Grant    15 年前

    以下是您可能想要尝试的一些WMI设置。目前我手头没有64位系统,但应该很容易检查。源代码如下。请注意,您可能最终不得不使用多个调用组合(例如,一个用于查找wow,另一个用于查找本机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();
        }
    }