Как моя программа может определить, работает ли она на 32-разрядном или 64-разрядном Windows?

Вот мой вопрос. Что состоит в том, чтобы определить лучший способ, на какой разрядной архитектуре Ваше приложение работает?

Что я надеюсь делать: На сервере на 64 бита я хочу, чтобы мое приложение считало источники данных на 64 бита (сохраненный в reg ключевых Источниках данных Software\Wow6432Node\ODBC\ODBC.INI\ODBC) и если его 32 бита я хочу считать источники данных на 32 бита, (т.е. Чтение от Источников данных Software\ODBC\ODBC.INI\ODBC).

Я мог бы упускать суть, но я не хочу заботиться о том, в каком режиме мое приложение работает. Я просто хочу знать, составляет ли ОС 32 или 64 бита.

[Система. Среда. OSVersion. Платформа, кажется, не сокращает его для меня. Его Win32NT возврата на моей локальной xp машине и на win2k8 сервере на 64 бита (даже когда все мои проекты установлены предназначаться 'для любого CPU')]

5
задан Brooks Moses 23 December 2012 в 05:45
поделиться

5 ответов

1
ответ дан 18 December 2019 в 11:54
поделиться

Обычно вы даже не должны беспокоиться об этом. Система автоматически перенаправляет запросы реестра на Software \ Wow6432Node при запуске 32-разрядного приложения на 64-разрядной платформе.

4
ответ дан 18 December 2019 в 11:54
поделиться

Попробуйте свойство Environment.Is64BitOperatingSystem. Это новое свойство, добавленное в .Net 4.0 специально для проверки типа операционной системы.

4
ответ дан 18 December 2019 в 11:54
поделиться

Простое, безопасное решение, не зависящее от версии платформы, без обращения к реестру:

Console.WriteLine(
    "Is 64-bit? {0}",
    (
        System.Runtime.InteropServices.Marshal.SizeOf(typeof(IntPtr)) == sizeof(Int64)
            ? "Yes" 
            : "No"
    )
);
4
ответ дан 18 December 2019 в 11:54
поделиться

Не следует читать Wow6432Node напрямую. Используйте RegistryView для указания 32-битного представления при запуске в качестве 64-битного приложения.

2
ответ дан 18 December 2019 в 11:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: