Function OsVersion() 'Returns the base + minor version for the OS. Returns 0 on error. '3.5=NT, 4.0=95, 4.1=98, 4.9=ME, 5.0=2K, 5.1=XP, 5.2=2003, 6.0=Vista Dim strVersion, objWMI, colSystems, objOS Dim ver, strVer, strVerMajor, strVerMinor, strMajor strVersion = "0" 'Set a default of zero in case of error On Error Resume Next Set objWMI = GetObject("winmgmts:\\.\root\CIMV2") Set colSystems = objWMI.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", 48) For Each objOS In colSystems strVersion = objOS.Version Next Set objWMI = Nothing If InStr(strVersion, ".") > 0 Then strVersion = Left(strVersion, InStr(strVersion, ".") + 1) End If 'If WMI fails, try parsing output from the old "ver" command If strVersion = "0" Then Set ws = CreateObject("Wscript.Shell") Set ver = ws.Exec("%comspec% /c ver") Do While ver.Status = 0 WScript.Sleep 100 Loop strVer = ver.StdOut.ReadAll strVer = Split(strVer, ".") 'Get major version strMajor = strVer(0) strMajor = Split(strMajor, " ") strVerMajor = strMajor(UBound(strMajor)) 'Get minor version strVerMinor = strVer(1) strVerMinor = Left(strVerMinor, 1) 'Check results If IsNumeric(strVerMajor) And IsNumeric(strVerMinor) Then strVersion = strVerMajor & "." & strVerMinor End If End If OsVersion = strVersion End Function