Страницы

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

суббота, 8 февраля 2020 г.

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

#c_sharp #net #winapi #windows_7


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


Ответы

Ответ 1



Выяснить разрядность ОС (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; } } }

Ответ 2



Environment Class Environment.Is64BitOperatingSystem Environment.Is64BitProcess

Ответ 3



Вот :D if(Directory.Exists(@"C:\Windows\SysWOW64") == true) { Console.WriteLine("Ваш виндовс, безусловно 64 разрядный."); } else { Console.WriteLine("Не, разрядность вашего виндовс, такая же, сколько у человека зубов =("); } Console.ReadLine(); Шутка конечно, но катит) Если что, можно поменять на if (Directory.Exists(@"C:\Program Files (x86)") == true) { Console.WriteLine("Ваш виндовс, безусловно 64 разрядный."); } else { Console.WriteLine("Не, разрядность вашего виндовс, такая же, сколько у человека зубов =("); } Console.ReadLine();

Ответ 4



Вот хороший пост по этому поводу:

Ответ 5



class Program { static void Main(string[] args) { if (Environment.Is64BitOperatingSystem) Console.WriteLine("64Bit"); else Console.WriteLine("32Bit"); Console.ReadKey(); } }

Ответ 6



bool is64bit = System.Environment.OSVersion.Major > 5;

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

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