Ich glaube nicht, dass es einen 100% definitiven Weg gibt, ohne PInvoke zu wissen.
Aber ein Punkt, der vielleicht funktioniert, ist es, die Menge der geladenen Module zu überprüfen ( Process.Modules
). Wenn die primären Module (user32, kernel32, etc ...) aus dem Wow64-Verzeichnis kommen und Sie eine 64-Bit-Maschine betreiben, dann besteht eine gute Chance, dass es sich um einen 32-Bit-Prozess handelt. Wenn sie nicht aus dem Wow64-Verzeichnis stammen und es sich um eine 64-Bit-Maschine handelt, handelt es sich wahrscheinlich um einen 64-Bit-Prozess.
Wieder nicht definitiv, aber ein guter Schätzwert.
Wie von anderen erwähnt, können Sie IsWow64Process verwenden, das einfach implementiert werden kann hier .
Wenn ein Prozess auf einem 64-Bit-Betriebssystem ausgeführt wird, handelt es sich einfach um einen 64-Bit-Prozess.
Es ist möglich, dass Code, der ursprünglich für 32-Bit-Systeme geschrieben wurde, auf 64-Bit-Versionen läuft, da er innerhalb der Speicherbeschränkungen der 64-Bit-Umgebung arbeiten kann. Sie ist jedoch nicht mehr an diese Beschränkungen gebunden, unabhängig davon, ob sie diese Tatsache nutzen oder nicht. Als solches gibt es keinen "32-Bit-Prozess", wenn es auf einer 64-Bit-Maschine läuft.
Denken Sie daran wie ein Hund, der trainiert wurde, in einem bestimmten Bereich zu bleiben, indem er unsichtbares Fechten benutzt. Wenn das eingezäunte Gebiet später erweitert würde, würden Sie feststellen, dass einige schlauere Hunde sofort beginnen würden, das neue Gebiet zu nutzen. Auch wenn andere Hunde sich der Veränderung nicht bewusst sind und weiterhin innerhalb ihrer wahrgenommenen Grenzen operieren, bedeutet dies nicht, dass ihre Grenzen anders wären als die der klügeren.