是否可以使用vb.net代码检查计算机是32位还是64位?我只想在消息中显示结果。
请给我建议。
发布于 2013-01-20 17:05:13
Environment.Is64BitOperatingSystem应该做得很好。
确定当前操作系统是否为64位操作系统。
假设false表示32位环境。
如果要确定进程是否为64位进程(因为您可以在64位操作系统上运行32位进程),请使用Environment.Is64BitProcess
确定当前进程是否为64位进程。
这两个都是在.NET 4.0中引入的。
发布于 2013-01-20 17:13:28
如果在64位.NET上的32位WindowsFramework2.0中运行,IntPtr.Size将不会返回正确的值(它将返回32位)。
您必须首先检查是否在64位进程中运行(我认为在.NET中可以通过检查IntPtr.Size来做到这一点),如果您正在32位进程中运行,则仍然必须调用Win函数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发布于 2014-11-20 11:20:26
我简单地使用了这段代码,它工作得很好:
If System.Environment.Is64BitOperatingSystem = True Then
MessageBox.Show("OS System : 64 Bit Operating System")
Else
MessageBox.Show("OS System : 32 Bit Operating System")
End Ifhttps://stackoverflow.com/questions/14423057
复制相似问题