2008-09-18 5 views
5

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

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

+1

Вы должны принять ответ или объяснить, что вы сделали в конце, и принять это. – 2009-12-10 14:07:01

ответ

0

Проверьте размер IntPtr с маршалом.SizeOf. 32 бит = 4 байта, 64 бит = 8 байт.

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

+0

Это будет отличаться от 32-разрядной и 64-битной платформы, хотя 64-битная платформа может быть, скажем, Itanium, а не x64. (Вряд ли, я знаю, но возможно.) – millenomi 2008-09-18 08:22:15

+0

Вам не нужно использовать Marshal.SizeOf, вы можете просто использовать IntPtr.Size – Wilka 2008-11-17 15:32:36

+1

-1: Это говорит о том, является ли этот .NET-процесс x64 – 2009-12-10 14:03:50

-2

Проверьте только IntPtr.Size. У вас должна быть целевая платформа как AnyCPU.

from here

4

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

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^