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