Buenas, quisiera saber como podría reconocer la versión de windows en la que se está ejecutando mi programa en vb6, así como hacen los troyanos cuando nos dicen la versión de windows de los remotos.
Busqué por google y por todos lados y lo único que encontré fue un código que al parecer funciona mal:
option explicit

private Declare Function RtlGetVersion Lib "NTDLL" (ByRef lpVersionInformation As Long) As Long
Public Function NativeGetVersion() As String
Dim tOSVw(&H54) As Long
tOSVw(0) = &H54 * &H4
Call RtlGetVersion(tOSVw(0))
NativeGetVersion = Join(Array(tOSVw(4), tOSVw(1), tOSVw(2)), ".")
End Function

Public Function VersionToName(ByRef sVersion As String) As String
Select Case sVersion
Case "1.0.0": VersionToName = "Windows 95"
Case "1.1.0": VersionToName = "Windows 98"
Case "1.9.0": VersionToName = "Windows Millenium"
Case "2.3.0": VersionToName = "Windows NT 3.51"
Case "2.4.0": VersionToName = "Windows NT 4.0"
Case "2.5.0": VersionToName = "Windows 2000"
Case "2.5.1": VersionToName = "Windows XP"
Case "2.5.3": VersionToName = "Windows 2003 (SERVER)"
Case "2.6.0": VersionToName = "Windows Vista"
Case "2.6.1": VersionToName = "Windows 7"
Case Else: VersionToName = "Unknown"
End Select
End Function
Utilizo este código en windows 7 y me dice que estoy bajo XP.

Si alguien me puede ayudar estaría muy agradecido.

Saludos!
Imagen
Lo más fácil es usar WMI:
Public Function GetOS()
    Dim List, msg, object
    Set List = GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_OperatingSystem")
    If List.Count > 0 Then
        For Each object In List
            msg = msg & object.Caption
            msg = msg & " " & object.version
            msg = msg & " [Build: " & object.buildnumber & "]"
        Next
    Else
        msg = ""
    End If
    GetOS = msg
End Function
[Enlace externo eliminado para invitados]
[Enlace externo eliminado para invitados]
[Enlace externo eliminado para invitados]


Saludos
Imagen
Responder

Volver a “VB/.NET”