是否可以使用 vb.net 代码检查计算机是 32 位还是 64 位?我只想在消息中显示结果。
请指教。
Environment.Is64BitOperatingSystem
应该做得很好。
确定当前操作系统是否为 64 位操作系统。
假设 false 表示 32 位环境。
如果您想知道进程是否为 64 位(因为您可以在 64 位操作系统上运行 32 位进程),请使用Environment.Is64BitProcess:
确定当前进程是否为 64 位进程。
这两者都已在 .NET 4.0 中引入。
如果在 64 位 Windows 上的 32 位 .NET Framework 2.0 中运行,IntPtr.Size 将不会返回正确的值(它将返回 32 位)。
您必须首先检查是否在 64 位进程中运行(我认为在 .NET 中您可以通过检查 IntPtr.Size 来做到这一点),如果您在 32 位进程中运行,您仍然必须调用 Win API函数 IsWow64Process。如果返回 true,则您正在 64 位 Windows 上的 32 位进程中运行。
Microsoft 的 Raymond Chen: 如何以编程方式检测您是否在 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 System.Environment.Is64BitOperatingSystem = True Then
MessageBox.Show("OS System : 64 Bit Operating System")
Else
MessageBox.Show("OS System : 32 Bit Operating System")
End If
If IntPtr.Size = 8 Then
' 64 bit machine
ElseIf IntPtr.Size = 4 Then
' 32 bit machine
End If
Msgbox (Runtime.InteropServices.Marshal.SizeOf(GetType(IntPtr)) * 8)
采用
If System.IO.Directory.Exists("C:\Program Files (x86)") Then
MsgBox("64-Bit OS")
Else
MsgBox("32-Bit OS")
End If
它将适用于所有框架版本