vb.netコードを使用して、コンピューターが32ビットか64かを確認することはできますか? 結果をメッセージで表示したいだけです。
お知らせ下さい。
Environment.Is64BitOperatingSystem
うまくいくはずです。
現在のオペレーティングシステムが64ビットオペレーティングシステムであるかどうかを判別します。
falseは32ビット環境を意味するという仮定。
プロセスが64ビットであるかどうかを確認したい場合(64ビットOSで32ビットプロセスを実行できるため)、Environment.Is64BitProcessを使用します。
現在のプロセスが64ビットプロセスであるかどうかを判別します。
これらは両方とも.NET4.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
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
すべてのフレームワーク バージョンで動作します