Вот мой вопрос. Что состоит в том, чтобы определить лучший способ, на какой разрядной архитектуре Ваше приложение работает?
Что я надеюсь делать: На сервере на 64 бита я хочу, чтобы мое приложение считало источники данных на 64 бита (сохраненный в reg ключевых Источниках данных Software\Wow6432Node\ODBC\ODBC.INI\ODBC) и если его 32 бита я хочу считать источники данных на 32 бита, (т.е. Чтение от Источников данных Software\ODBC\ODBC.INI\ODBC).
Я мог бы упускать суть, но я не хочу заботиться о том, в каком режиме мое приложение работает. Я просто хочу знать, составляет ли ОС 32 или 64 бита.
[Система. Среда. OSVersion. Платформа, кажется, не сокращает его для меня. Его Win32NT возврата на моей локальной xp машине и на win2k8 сервере на 64 бита (даже когда все мои проекты установлены предназначаться 'для любого CPU')]
Как обнаружить 64-разрядную платформу Windows с помощью .net? может быть полезным.
Обычно вы даже не должны беспокоиться об этом. Система автоматически перенаправляет запросы реестра на Software \ Wow6432Node
при запуске 32-разрядного приложения на 64-разрядной платформе.
Попробуйте свойство Environment.Is64BitOperatingSystem
. Это новое свойство, добавленное в .Net 4.0 специально для проверки типа операционной системы.
Простое, безопасное решение, не зависящее от версии платформы, без обращения к реестру:
Console.WriteLine(
"Is 64-bit? {0}",
(
System.Runtime.InteropServices.Marshal.SizeOf(typeof(IntPtr)) == sizeof(Int64)
? "Yes"
: "No"
)
);
Не следует читать Wow6432Node напрямую. Используйте RegistryView для указания 32-битного представления при запуске в качестве 64-битного приложения.