[VB.NET] NativeOsVersion

Iniciado por fudmario, Enero 12, 2017, 08:00:25 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Alternativa a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, para aplicaciones que no se han manifestado para Windows 8.1 o Windows 10.
Código: vbnet

    <DllImport("Ntdll.dll", CharSet:=CharSet.Unicode, ExactSpelling:=True)>
    Friend Shared Function RtlGetVersion(<[In], Out> ByVal osversion As RtlOsVersionInfoExW) As Integer
    End Function

    <StructLayout(LayoutKind.Sequential)>
    Public Class RtlOsVersionInfoExW
        Public dwOSVersionInfoSize As UInt32
        Public dwMajorVersion As UInt32
        Public dwMinorVersion As UInt32
        Public dwBuildNumber As UInt32
        Public dwPlataformId As UInt32
        <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=128)> Public szCSDVersion As String
        Public wServicePackMajor As UInt16
        Public wServicePackMinor As UInt16
        Public wSuiteMask As UInt16
        Public bProductType As Byte
        Public bReserved As Byte
    End Class

    Public Function NativeOsVersion() As Version
        Dim osVersionInfo As New RtlOsVersionInfoExW()
        osVersionInfo.dwOSVersionInfoSize = Marshal.SizeOf(GetType(RtlOsVersionInfoExW))
        Dim status As Integer = RtlGetVersion(osVersionInfo)
        If status <> 0 Then
            ' Throw New Win32Exception(RtlNtStatusToDosError(status))
            Return Environment.OSVersion.Version
        End If

        Return New Version(osVersionInfo.dwMajorVersion,
                           osVersionInfo.dwMinorVersion,
                           osVersionInfo.dwBuildNumber)
    End Function