Подтвердить что ты не робот

Как проверить, является ли ОС 32-разрядной ОС или 64 бит

Можно ли проверить, является ли компьютер 32-разрядным или 64-битным с использованием кода vb.net? Я просто хочу отобразить результат в сообщении.

Просьба сообщить.

4b9b3361

Ответ 1

Environment.Is64BitOperatingSystem должен делать красиво.

Определяет, является ли текущая операционная система 64-разрядной операционной системой.

Предполагается, что ложь означает 32-битную среду.

Если вы хотите узнать, является ли процесс 64-битным (так как вы можете запустить 32-битный процесс на 64-битной ОС), используйте Environment.Is64BitProcess:

Определяет, является ли текущий процесс 64-битным процессом.


Оба из них были внедрены в .NET 4.0.

Ответ 2

IntPtr.Size не вернет правильное значение при запуске в 32-разрядной .NET Framework 2.0 на 64-битной Windows (он вернет 32-разрядную версию).

Сначала вы должны проверить, работает ли в 64-разрядном процессе (я думаю, что в .NET вы можете сделать это, проверив IntPtr.Size), и если вы работаете в 32-битном процессе, вам все равно придется звонить функция Win API IsWow64Process. Если это возвращает true, вы выполняете 32-разрядный процесс в 64-разрядной Windows.

Microsoft Раймонд Чен: Как программно определить, работаете ли вы в 64-битной Windows.

Решение:

Private is64BitProcess As Boolean = (IntPtr.Size = 8)
Private is64BitOperatingSystem As Boolean = is64BitProcess OrElse InternalCheckIsWow64()

<DllImport("Kernel32.dll", SetLastError:=True, CallingConvention:=CallingConvention.Winapi)> _
    Public Shared Function IsWow64Process( _
    ByVal hProcess As Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid, _
    ByRef wow64Process As Boolean) As <MarshalAs(UnmanagedType.Bool)> Boolean

    End Function

Public Shared Function InternalCheckIsWow64() As Boolean
    If (Environment.OSVersion.Version.Major = 5 AndAlso Environment.OSVersion.Version.Minor >= 1) OrElse Environment.OSVersion.Version.Major >= 6 Then
        Using p As Process = Process.GetCurrentProcess()
            Dim retVal As Boolean
            If Not IsWow64Process(p.Handle, retVal) Then
                Return False
            End If
            Return retVal
        End Using
    Else
        Return False
    End If
End Function

Ответ 3

If IntPtr.Size = 8 Then

    ' 64 bit machine

ElseIf IntPtr.Size = 4 Then

    ' 32 bit machine

End If

Ответ 4

Я просто использую этот кусок кода, и он отлично работает:

If System.Environment.Is64BitOperatingSystem = True Then
    MessageBox.Show("OS System : 64 Bit Operating System")
Else
    MessageBox.Show("OS System : 32 Bit Operating System")
End If

Ответ 5

VB.NET: Мне нужно работать, как показано ниже. Определите пользовательскую константу Win64 в x64 всех конфигурациях (debug, release и т.д.), Как на диаграмме ниже, и используйте ее следующим образом:

If (Win64) Then

   '64 bit code
else
   ' 32 bit code here
End If

введите описание изображения здесь

Ответ 6

Msgbox (Runtime.InteropServices.Marshal.SizeOf(GetType(IntPtr)) * 8)