En ocasiones queremos saber si nuestra versión de Windows instalada es de 32 o 64 bits. Desde VB.Net podemos saberlo muy facilmente, si deseas saber como continua leyendo este tutorial que incluye un código fuente para implementar en nuestro proyecto.
Recientemente publiqué una función para saber la versión de Windows instalada, pues bien, en esta ocasión vamos a usarla junto a un código fuente que nos permite hacer lo que el título de este post menciona, saber de cuantos bits es nuestro sistema operativo. Si aún no la haz integrado a tu sistema ahora es el momento.
'#### Purpose: Return operative system bits version
'#### Created date: 11/01/2016
'#### Created by username: Juan Manuel Mar Hdz.
'#### Last modified date: 14/01/2016
'#### Last modified username: Juan Manuel Mar Hdz.
'#### Thanks to http://dondueck.com/2010/04/15/detecting-32-bit-vs-64-bit-os-architecture-in-vb-net/
'#### Thanks to https://es.wikipedia.org/wiki/Windows_95
Public Function getBitsVersion() As Long
Dim winver As String = ""
Dim key As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.LocalMachine
'##### Return bits number to old window's versions or others systems ####
Try
winver = getVersion().Trim
Catch exp As Exception
winver = ""
End Try
If isOldWindowsSystem = True Or isNotWindowsSystem = True Then
If isNotWindowsSystem = True Then
Return 32
Else
If winver.IsNullOrEmpty(winver) = True Then
Return 32
Else
If winver.Trim().ToLower = "windows 3.1" Then
Return 16
Else
Return 32
End If
End If
End If
Exit Function
End If
'##### Return bits number to old window's versions or others systems ####
Try
If key.OpenSubKey("Hardware\Description\System\CentralProcessor").GetValue("Identifier").ToString().ToLower().Contains("x86") Or key.OpenSubKey("Hardware\Description\System\CentralProcessor").GetValue("Identifier").ToString().ToLower().Contains("32") Then
Return 32
Else
Return 64
End If
Catch exp As Exception
Try
If key.OpenSubKey("Hardware\Description\System\CentralProcessor\0").GetValue("Identifier").ToString().ToLower().Contains("x86") Or key.OpenSubKey("Hardware\Description\System\CentralProcessor\0").GetValue("Identifier").ToString().ToLower().Contains("32") Then
Return 32
Else
Return 64
End If
Catch ex As Exception
Try
If key.OpenSubKey("Hardware\Description\System\CentralProcessor\1").GetValue("Identifier").ToString().ToLower().Contains("x86") Or key.OpenSubKey("Hardware\Description\System\CentralProcessor\1").GetValue("Identifier").ToString().ToLower().Contains("32") Then
Return 32
Else
Return 64
End If
Catch e As Exception
Return 32
End Try
End Try
End Try
End Function
La función "getVersion" solo tiene la finalidad de regresar la versión de Windows, esto no está probado en las versiones antiguas (Windows 3.11 y Windows 9.x, aunque a estas alturas dudo que alguien lo use, además de que yo sepa no existe el framework .Net para este sistema), de esa manera si se trata de una versión antigua se retorna 16 o 32 bits directamente, si por el contrario ya se trata de una versión más actual de Windows se usará entonces el registro para determinar correctamente su número en bits.
Pero en caso contrario usamos el registro para saber de cuantos bits es nuestro procesador, como pueden en el registro del sistema hay dos variantes posibles (llaves): Hardware\Description\System\CentralProcessor y Hardware\Description\System\CentralProcessor\0, con este dato obtenido podemos saber facilmente el número de bits de nuestro sistema. Espero les sea de utilidad.
Procedencia de las imágenes: |
File: Logos de Windows URL: http://mlm-s2-p.mlstatic.com/sistemas-operativos-software-juegos-pc-339801-MLM20437678808_102015-S.jpg Licencia: Creative Commons |
¿Te gustó este post?, entonces si lo deseas puedes apoyarnos para continuar con nuestra labor, gracias.
Hay una forma algo más sencilla de implementarlo en .NET, que es usar https://Environment.is64bitoperatingsystem, disponible en .NET 4.
ResponderBorrarSobre los chequeos de 16 bit, no tienen sentido, ya que no hay runtimes de .NET compatibles Win16, de modo que nunca se dará el caso de ese programa ejecutándose en un Windows 3.
Gracias por tu comentario, aunque no trabajo en .net 4 por la cuestión de que muchas pcs con xp (mis clientes) o no lo tienen instalado o tienen xp que viene con el 3.5, de hecho me topado con una maquina donde no es posible instalar el nuevo .net aun con permisos de administrador :( . Te agradezco de cualquier modo tu aporte. Con respecto a los 16 bits tienes razón, pero lo dejé por cuestiones de control de versiones del sistema.
Borrar