Como saber si un windows es server o Work station y su idioma

juanchato
30 de Abril del 2004
Amigos de la lista, necesito un código para saber si un windows es w2k professional, w2k server, Windows NT4 server y Windows NT4 WS; también saber su idioma. Solo he logrado con una API identificar la versión del sistema operativo de manera general (w95, w98, wME, Wnt3.1, wnt4, w2k y wXP). Agradezco de antemano cualquier ayuda que me pudieran dar al respecto.

juanchato
30 de Abril del 2004
Yo necesito esto porque quiero hacer un programa que instale automáticamente los parches microsoft que salen cada semana en las PC's de mi red (más de 300), pero para eso necesito el idioma y la versión exacta (incluyendo si el SO es server o WS).

juanchato
30 de Abril del 2004
Este es el código con el que se puede detectar la versión del SO pero no puedo obtener si el Windows 2000 es professional o server o si el NT4 es Server o WorkStation ni el idioma de cada SO, por favor ayúdemme a implementar esto ya que creo que puede ser de mucha utilidad para todos:

' Primero se crea un módulo con el siguiente código:

Public Declare Function GetVersionExA Lib "kernel32" _
(lpVersionInformation As OSVERSIONINFO) As Integer

Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type

' Luego en el formulario se coloca la siguiente función:

Public Function getVersion() As String
Dim osinfo As OSVERSIONINFO
Dim retvalue As Integer
osinfo.dwOSVersionInfoSize = 148
osinfo.szCSDVersion = Space$(128)
retvalue = GetVersionExA(osinfo)
With osinfo
Select Case .dwPlatformId
Case 1
Select Case .dwMinorVersion
Case 0
getVersion = "Windows 95"
Case 10
getVersion = "Windows 98"
Case 90
getVersion = "Windows Millennium"
End Select
Case 2
Select Case .dwMajorVersion
Case 3
getVersion = "Windows NT 3.51"
Case 4
getVersion = "Windows NT 4.0"
Case 5
If .dwMinorVersion = 0 Then
getVersion = "Windows 2000"
Else
getVersion = "Windows XP"
End If
End Select
Case Else
getVersion = "Failed"
End Select
End With
End Function

juanchato
30 de Abril del 2004
.