Question

Il y a un ENUM de toutes les architectures de processeur prises en charge ici: http://msdn.microsoft.com/en-us/library/system.reflection.processorarchitecture.aspx

Est-il possible de déterminer lequel correspond à l'environnement de fonctionnement? . System.Reflection.Assembly.GetExecutingAssembly () retourne ProcessorArchitecture MSIL -. Évidemment faux

EDIT: Bojan Resnik a posté une réponse et a supprimé. Je vois que des éclaircissements sont nécessaires à partir de la trace partielle je suis arrivé.

L'assemblée doit fonctionner sur de multiples architectures et faire des choses différentes en fonction de ce instructions de montage du processus de fonctionnement accepte. Essentiellement, je dois sélectionner la version d'une DLL native pour charger. J'ai une pour chaque architecture.

Était-ce utile?

La solution

P / Invoking GetSystemInfo est trivial de NET et est beaucoup plus léger poids de WMI. En outre, il retourne l'architecture comme on le voit par le processus si sur une machine x64 un processus WOW voir x86 et un processus natif voir x64.

Autres conseils

Voici quelques paramètres WMI vous pouvez essayer. Je n'ai pas à portée de main au moment système 64 bits, mais il devrait être facile de vérifier. Le code source est ci-dessous. Notez que vous pouvez finir par avoir à utiliser une combinaison d'appels (par exemple pour trouver un wow, un autre natif de trouver 32 contre 64, etc.).

En outre, consultez http://social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/b1cfef99-5247-47c5-93d4-31eb6849df48 pour une discussion plus approfondie.

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();
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top