如何检查操作系统是32位操作系统还是64位操作系统

时间:2013-01-20 09:02:46

标签: vb.net

是否可以使用vb.net代码检查计算机是32位还是64位? 我只是想在消息中显示结果。

请告知。

7 个答案:

答案 0 :(得分:32)

Environment.Is64BitOperatingSystem应该做得很好。

  

确定当前操作系统是否为64位操作系统。

假设错误表示32位环境。

如果您想知道进程是否为64位(因为您可以在64位操作系统上运行32位进程),请使用Environment.Is64BitProcess

  

确定当前进程是否为64位进程。


这两个都已在.NET 4.0中引入。

答案 1 :(得分:1)

如果在64位Windows上运行32位.NET Framework 2.0(它将返回32位),IntPtr.Size将不会返回正确的值。

您必须首先检查是否在64位进程中运行(我认为在.NET中您可以通过检查IntPtr.Size来执行此操作),如果您在32位进程中运行,则仍需要调用Win API函数IsWow64Process。如果返回true,则表示您在64位Windows上运行32位进程。

微软的Raymond Chen: How to detect programmatically whether you are running on 64-bit 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

答案 2 :(得分:0)

If IntPtr.Size = 8 Then

    ' 64 bit machine

ElseIf IntPtr.Size = 4 Then

    ' 32 bit machine

End If

答案 3 :(得分:0)

我只是使用这段代码,它工作正常:

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

答案 4 :(得分:0)

VB.NET:我想要的工作如下。在x64所有配置(调试,发布等)中定义自定义常量Win64,如下图所示,并按如下方式使用它:

If (Win64) Then

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

enter image description here

答案 5 :(得分:-1)

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

答案 6 :(得分:-1)

使用

If System.IO.Directory.Exists("C:\Program Files (x86)") Then
  MsgBox("64-Bit OS")
Else
  MsgBox("32-Bit OS")
End If

它适用于所有框架版本