En ocasiones queremos saber en que versión del sistema operativo (Windows) está ejecutandose nuestro programa. 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.
Mediante la propiedad Environment.OSVersion podemos obtener mucha información de nuestro sistema operativo, pero nos interesa saber la versión instalada. Para ello vamos a implementar el siguiente código fuente:
'#### Purpose: Return windows version
'#### Created date: 27/10/2012
'#### Created by username: Juan Manuel Mar Hdz.
'#### Last modified date: 07/09/2015
'#### Last modified username: Juan Manuel Mar Hdz.
'#### Thanks to http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/5956c04f-072a-406c-ae6a-cc8b3a207936
'#### Thanks to https://en.wikipedia.org/wiki/Windows_NT
Public Function getVersion() As String
Dim strVersion As String = "Unknown"
Select Case Environment.OSVersion.Platform
Case PlatformID.Win32S
strVersion = "Windows 3.1"
Case PlatformID.Win32Windows
Select Case Environment.OSVersion.Version.Minor
Case 0I
strVersion = "Windows 95"
Case 10I
If Environment.OSVersion.Version.Revision.ToString() = "2222A" Then
strVersion = "Windows 98 Second Edition"
Else
strVersion = "Windows 98"
End If
Case 90I
strVersion = "Windows ME"
End Select
Case PlatformID.Win32NT
Select Case Environment.OSVersion.Version.Major
Case 3I
strVersion = "Windows NT 3.51"
Case 4I
strVersion = "Windows NT 4.0"
Case 5I
Select Case Environment.OSVersion.Version.Minor
Case 0I
strVersion = "Windows 2000"
Case 1I
strVersion = "Windows XP"
Case 2I
strVersion = "Windows 2003"
End Select
Case 6I
Select Case Environment.OSVersion.Version.Minor
Case 0I
strVersion = "Windows Vista"
Case 1I
strVersion = "Windows 7"
Case 2I
strVersion = "Windows 8"
Case 3I
strVersion = "Windows 8.1"
End Select
Case 10I
Select Case Environment.OSVersion.Version.Minor
Case 0I
strVersion = "Windows 10"
End Select
End Select
Case PlatformID.WinCE
strVersion = "Windows CE"
Case PlatformID.Unix
strVersion = "Unix"
End Select
Return strVersion
End Function
Como pueden ver, gracias a una combinación de las propiedades Environment.OSVersion.Platform y Environment.OSVersion.Version podemos calcular la versión de nuestro sistema operativo en turno, muy sencillo, ¿verdad?, espero les sea de utilidad.
Corrección: Esta función no trabaja adecuadamente en Windows 10, para la versión corregida sigan este link http://marjuanm.blogspot.mx/2016/02/correccion-para-la-funcion-saber-la.html |
Procedencia de las imágenes: |
File: Logos de Windows URL: https://www.xatakawindows.com/windows/repaso-a-historia-windows-medio-sus-logotipos-asi-han-cambiado-paso-anos Licencia: Creative Commons |
¿Te gustó este post?, entonces si lo deseas puedes apoyarnos para continuar con nuestra labor, gracias.
El problema que yo me he encontrado es que Environment.OSVersion, que al final retorna GetVersionEx salvo que uses un manifest nuevo, retornará como mucho Windows 8: https://msdn.microsoft.com/library/windows/desktop/ms724832.aspx
ResponderBorrarEn mi caso, lo que hago es llamar a RtlGetVersion, si está disponible, que no tiene ese problema, con un fallback a GetVersion tradicional:
http://sourceforge.net/p/nikkhokkho/code/HEAD/tree/trunk/FileOptimizer/Source/clsUtil.cpp
Pues tienes razón, probé esta función en windows xp/7/8 y trabaja muy bien, pero en windows 10 lo detecta como windows 8 :( voy a reescribir la función con tu sugerencia, gracias por tu aporte, cuando quede funcionando te notifico.
Borrar