是否可以使用vb.net代码检查计算机是32位还是64位? 我只是想在消息中显示结果。
请告知。
答案 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
答案 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
它适用于所有框架版本