#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;
Комментариев нет:
Отправить комментарий