Страницы

Поиск по вопросам

воскресенье, 14 апреля 2019 г.

Как определить разрядность операционной системы средствами .NET?

Имеется C# приложение для Win 7, во время исполнения которого требуется определить, запущено оно на 32 или 64 bit'ой версии ОС. Возможно ли это сделать с помощью .NET или же необходимо использовать "обходные" пути?


Ответ

Выяснить разрядность ОС (32 или 64 bit) непосредственно средствами .NET невозможно, однако существуют способы с использованием WinAPI: С помощью функции IsWow64Process public static string GetOSBit() { bool is64bit = Is64Bit(); if (is64bit) return "x64"; else return "x32"; }
[DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool IsWow64Process([In] IntPtr hProcess, [Out] out bool lpSystemInfo);
public static bool Is64Bit() { bool retVal; IsWow64Process(Process.GetCurrentProcess().Handle, out retVal); return retVal; } С помощью размера типа IntPtr using System; using System.Runtime.InteropServices; class OSBitChecker { static bool Is64Bit { get { return Marshal.SizeOf(typeof(IntPtr)) == 8; } } }

Комментариев нет:

Отправить комментарий