Domanda

C'è un enumerazione di tutte le architetture di processore supportate qui: http://msdn.microsoft.com/en-us/library/system.reflection.processorarchitecture.aspx

C'è un modo per determinare quale corrisponde l'ambiente in esecuzione? . System.Reflection.Assembly.GetExecutingAssembly () ritorna ProcessorArchitecture MSIL -. Ovviamente sbagliato

EDIT: Bojan Resnik ha postato una risposta e ha cancellato. Vedo che qualche chiarimento è necessario dalla traccia parziale che ho ottenuto.

Il montaggio deve essere eseguito su più architetture e fare cose diverse in base a ciò le istruzioni di montaggio il processo in esecuzione accetta. In sostanza, ho bisogno di selezionare quale versione di una DLL nativa per caricare. Ho uno per ogni architettura.

È stato utile?

Soluzione

P / Invocare GetSystemInfo è banale da .Net ed è molto più leggero peso rispetto WMI. Inoltre, restituisce l'architettura come si è visto dal processo così su una macchina x64 un processo WOW vedrà x86 e un processo nativo vedrà x64.

Altri suggerimenti

Ecco alcune impostazioni WMI si consiglia di provare. Non ho un sistema a 64 bit a portata di mano al momento, ma dovrebbe essere facile da controllare. Il codice sorgente è al di sotto. Si noti che si può finire per dover utilizzare una combinazione di chiamate (ad esempio uno per trovare wow, un altro per trovare nativo 32 vs 64, ecc).

Inoltre, controllare http://social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/b1cfef99-5247-47c5-93d4-31eb6849df48 per un po 'di discussione.

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();
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top