Как я могу узнать, нахожусь ли я на x64 или x86, используя .NET? - PullRequest
5 голосов
/ 18 сентября 2008

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

Лучшее, что я нашел, - это использование Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"), но я бы подумал, что для этого есть какое-то встроенное средство?

Ответы [ 5 ]

5 голосов
/ 10 декабря 2009

Environment.Is64BitOperatingSystem и Environment.Is64BitProcess вводятся в .NET 4. Для .NET 2 вам нужно попробовать некоторые другие ответы.

4 голосов
/ 18 сентября 2008

Позвоните IsWow64Process, чтобы узнать, запущен ли 32-разрядный процесс в WOW64 в 64-разрядной операционной системе. Вы можете позвонить GetNativeSystemInfo, чтобы точно узнать, что это такое: wProcessorArchitecture member из SYSTEM_INFO будет PROCESSOR_ARCHITECTURE_INTEL для 32-разрядной, PROCESSOR_ARCHITECTURE_AMD64 для x64 и PROCESSOR_ARCHITECTURE_IA64 для Intel Itanium.

0 голосов
/ 10 декабря 2009

Вы можете определить многое через переменные окружения, как это используется в C # - Как получить Program Files (x86) в 64-разрядной версии Windows [И это оказалось мне лучше, чем ответ Майка, который мне +1 +1 ' d, поскольку мне интересно узнать имя каталога Program Files]

0 голосов
/ 18 сентября 2008

Отметьте только IntPtr.Size. Вы должны иметь целевую платформу как AnyCPU.

отсюда

0 голосов
/ 18 сентября 2008

Проверьте размер IntPtr с помощью Marshal.SizeOf. 32 бита = 4 байта, 64 бита = 8 байтов.

Редактировать: я не уверен, что это то, что вы ищете после повторного прочтения вопроса.

...