首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查操作系统是32位操作系统还是64位操作系统

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

Stack Overflow用户
提问于 2013-01-20 17:02:46
回答 7查看 37.8K关注 0票数 20

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

请给我建议。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-01-20 17:05:13

Environment.Is64BitOperatingSystem应该做得很好。

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

假设false表示32位环境。

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

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

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

票数 36
EN

Stack Overflow用户

发布于 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

解决方案:

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2014-11-20 11:20:26

我简单地使用了这段代码,它工作得很好:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14423057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档