Frage

Es gibt eine Enumeration aller unterstützten Prozessorarchitekturen hier: http://msdn.microsoft.com/en-us/library/system.reflection.processorarchitecture.aspx

Gibt es eine Möglichkeit zu bestimmen, welche die Fahrumgebung entspricht? . System.Reflection.Assembly.GetExecutingAssembly () Processor kehrt MSIL -. Offensichtlich falsch

EDIT: Bojan Resnik veröffentlicht eine Antwort und es gelöscht. Ich sehe, dass eine Klarstellung von der teilweisen Spur benötigt wird, bekam ich auch.

Die Montage muss auf mehreren Architekturen laufen und verschiedene Dinge zu tun, basierend auf welche Montageanleitung der laufenden Prozess übernimmt. Im Wesentlichen muss ich wählen, welche Version eines nativen DLL zu laden. Ich habe einen für jede Architektur.

War es hilfreich?

Lösung

P / Hervorrufen von GetSystemInfo ist trivial von .Net und ist viel leichter Gewicht als WMI. Auch es gibt die Architektur, wie durch den Prozess gesehen so auf einer x64-Maschine ein WOW-Prozess x86 und ein native Prozess sehen werden sehen, x64.

Andere Tipps

Hier einige WMI-Einstellungen, die Sie versuchen wünschen können. Ich habe kein 64-Bit-System praktisch in dem Moment, aber es sollte einfach sein, zu überprüfen. Der Quellcode ist unten. Beachten Sie, dass Sie am Ende mit einer Kombination von Anrufen verwenden (zum Beispiel einer finden wow, ein anderes zu finden native 32 vs. 64, etc.).

Überprüfen Sie auch, http://social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/b1cfef99-5247-47c5-93d4-31eb6849df48 für etwas mehr Diskussion.

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();
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top