Как узнать во время выполнения, если я нахожусь в режиме x86 или x64 в С#

Возможный дубликат:
Как узнать, работает ли мое приложение как 32 или 64-битное приложение?

Привет

У меня есть приложение в С# (Framework 3.5 SP1), и мне нужно загрузить неуправляемую сборку во время выполнения, но есть две разные версии: одна для x86 и другая для x64, поэтому мне нужно знать во время выполнения, в котором режим - это приложение, выполняющее

Я видел этот POST, но он для С++, есть ли более простой способ сделать это на С#? или как это сделать на С#?

Спасибо

Ответ 1

Вы можете проверить, IntPtr.Size 4 или 8.

Ответ 2

Используйте свойство System.Environment.Is64BitOperatingSystem, представленное в .NET 4.0. Согласно MSDN:

Определяет, является ли текущая операционная система 64-разрядной операционной системой, она возвращает true, если операционная система 64-разрядная; в противном случае false.

Ответ 3

Вы можете просто проверить размер IntPtr через IntPtr.Size, чтобы узнать, как работает ваш процесс:

  • Если это 8 байт, вы работаете как x64-процесс.
  • Если это 4 байта, то вы работаете как процесс x86.

В .NET вы можете настроить Platform Target в своих свойствах проекта на Any CPU, чтобы автоматически запускать ваше приложение как x64 на x64 OS и x86 на ОС x86 с тем же двоичным кодом.


Ваше приложение может работать на x86 даже на ОС x64, так как процесс, запускающий его, может работать на эмуляции WOW64 и запускает ваш процесс. Вот несколько дополнительных способов запустить x64-процесс как процесс x86 на x64-ОС.

Ответ 4

Это сообщение в блоге MSDN - хорошее начало. GetEnvironmentVariable("PROCESSOR_ARCHITECTURE").ToString() также см. код GetPlatform в Mono Paint.