Можно ли проверить, является ли компьютер 32-разрядным или 64-битным с использованием кода vb.net? Я просто хочу отобразить результат в сообщении.
Просьба сообщить.
Можно ли проверить, является ли компьютер 32-разрядным или 64-битным с использованием кода vb.net? Я просто хочу отобразить результат в сообщении.
Просьба сообщить.
Environment.Is64BitOperatingSystem
должен делать красиво.
Определяет, является ли текущая операционная система 64-разрядной операционной системой.
Предполагается, что ложь означает 32-битную среду.
Если вы хотите узнать, является ли процесс 64-битным (так как вы можете запустить 32-битный процесс на 64-битной ОС), используйте Environment.Is64BitProcess:
Определяет, является ли текущий процесс 64-битным процессом.
Оба из них были внедрены в .NET 4.0.
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
If IntPtr.Size = 8 Then
' 64 bit machine
ElseIf IntPtr.Size = 4 Then
' 32 bit machine
End If
Я просто использую этот кусок кода, и он отлично работает:
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
VB.NET: Мне нужно работать, как показано ниже. Определите пользовательскую константу Win64
в x64 всех конфигурациях (debug, release и т.д.), Как на диаграмме ниже, и используйте ее следующим образом:
If (Win64) Then
'64 bit code
else
' 32 bit code here
End If
Msgbox (Runtime.InteropServices.Marshal.SizeOf(GetType(IntPtr)) * 8)