20

vb.netコードを使用して、コンピューターが32ビットか64かを確認することはできますか? 結果をメッセージで表示したいだけです。

お知らせ下さい。

4

7 に答える 7

36

Environment.Is64BitOperatingSystemうまくいくはずです。

現在のオペレーティングシステムが64ビットオペレーティングシステムであるかどうかを判別します。

falseは32ビット環境を意味するという仮定。

プロセスが64ビットであるかどうかを確認したい場合(64ビットOSで32ビットプロセスを実行できるため)、Environment.Is64BitProcessを使用します。

現在のプロセスが64ビットプロセスであるかどうかを判別します。


これらは両方とも.NET4.0で導入されました。

于 2013-01-20T09:05:12.597 に答える
1

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
于 2013-01-20T09:13:27.717 に答える
1

このコードを使用するだけで、正常に動作します。

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
于 2014-11-20T03:20:26.267 に答える
-1
Msgbox (Runtime.InteropServices.Marshal.SizeOf(GetType(IntPtr)) * 8)
于 2015-10-03T17:25:59.227 に答える
-2

使用する

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

すべてのフレームワーク バージョンで動作します

于 2018-05-22T08:35:34.900 に答える