Как узнать, работает ли мое приложение как 32-разрядное или 64-разрядное приложение?
Вопрос
Как узнать, работает ли мое приложение (скомпилированное в Visual & nbsp; Studio & nbsp; 2008 как Любой ЦП ) как 32-разрядное или 64-разрядное приложение?
Решение
if (IntPtr.Size == 8)
{
// 64 bit machine
}
else if (IntPtr.Size == 4)
{
// 32 bit machine
}
Другие советы
Если вы используете .NET 4.0, это однострочная версия для текущего процесс: р>
Environment.Is64BitProcess
Ссылка: Свойство Environment.Is64BitProcess (MSDN)
Я нашел этот код у Мартина Бовена , который делает свое дело:
public static bool Is64BitMode() {
return System.Runtime.InteropServices.Marshal.SizeOf(typeof(IntPtr)) == 8;
}
Этот пример кода из Microsoft All-In-One Code Framework может ответить на ваш вопрос:
Обнаружение платформы, на которой запущен процесс в C # (CSPlatformDetector)
Пример кода CSPlatformDetector демонстрирует следующие задачи связанные с обнаружением платформы:
<Ол>Определить имя текущей операционной системы. (например, «Microsoft Windows 7 Enterprise») Определить версию текущей операционной системы. (например, «Microsoft Windows NT 6.1.7600.0») Определите, является ли текущая операционная система 64-битной операционной системой. Определите, является ли текущий процесс 64-битным процессом. Определите, является ли произвольный процесс, работающий в системе, 64-разрядным. Ол>
Если вы просто хотите определить, является ли текущий запущенный процесс 64-битным В этом процессе вы можете использовать Environment.Is64BitProcess свойство, которое новое в .NET Рамочная 4.
А если вы хотите определить, работает ли произвольное приложение в системе
это 64-битный процесс, вам нужно определить битность ОС, и если он 64-битный,
вызовите IsWow64Process ()
с дескриптором целевого процесса:
static bool Is64BitProcess(IntPtr hProcess)
{
bool flag = false;
if (Environment.Is64BitOperatingSystem)
{
// On 64-bit OS, if a process is not running under Wow64 mode,
// the process must be a 64-bit process.
flag = !(NativeMethods.IsWow64Process(hProcess, out flag) && flag);
}
return flag;
}
В .Net Standard вы можете использовать System.Runtime.InteropServices.RuntimeInformation.OSArchitecture