Detecting which Windows is running

  • Thread starter Thread starter avi
  • Start date Start date
A

avi

Hello,

Is there a simple way to know programatically if the user's computer
runs Vista or XP?

Thanks a lot
Avi
 
Haven't tested on Vista as I don't have it, but see what this shows:

Option Explicit
Private Const VER_PLATFORM_WIN32_NT = 2
Private Const VER_PLATFORM_WIN32_WINDOWS = 1
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 ' Maintenance string for PSS usage
End Type
Private Declare Function GetVersionEx Lib "kernel32" _
Alias "GetVersionExA" _
(lpVersionInformation As
OSVERSIONINFO) As Long

Function getWindowsVersion() As String

Dim TheOS As OSVERSIONINFO
Dim strCSDVersion As String

TheOS.dwOSVersionInfoSize = Len(TheOS)
GetVersionEx TheOS

Select Case TheOS.dwPlatformId
Case VER_PLATFORM_WIN32_WINDOWS
If TheOS.dwMinorVersion >= 10 Then
getWindowsVersion = "Windows 98 version: "
Else
getWindowsVersion = "Windows 95 version: "
End If
Case VER_PLATFORM_WIN32_NT
getWindowsVersion = "Windows NT version: "
End Select

'Extract the Additional Version Information from
'the string with null char terminator
If InStr(TheOS.szCSDVersion, Chr(0)) <> 0 Then
strCSDVersion = ": " & Left$(TheOS.szCSDVersion, _
InStr(TheOS.szCSDVersion, Chr(0)) - 1)
Else
strCSDVersion = ""
End If

getWindowsVersion = getWindowsVersion & TheOS.dwMajorVersion & "." & _
TheOS.dwMinorVersion & _
" (Build " & TheOS.dwBuildNumber & strCSDVersion & ")"

End Function


Sub test()

MsgBox getWindowsVersion(), , "Windows version"

End Sub


RBS
 
Hi,

This reports it correctly on mine but not tested on other systems

mysystem = Environ(13)

Mike
 
Hi,

This reports it correctly on mine but not tested on other systems

mysystem = Environ(13)

Mike

Hello Avi,

Another method is to use "Application.Version". Xp returns "11.0", and
Vista "12.0"

Sincerely,
Leith Ross
 
I bet you meant: Application.OperatingSystem

Application.version will give the version of excel (11 is xl2003, 12 is xl2007
(I bet)).
 
Thanks for the tip; nice and simple.

RBS


Dave Peterson said:
I bet you meant: Application.OperatingSystem

Application.version will give the version of excel (11 is xl2003, 12 is
xl2007
(I bet)).
 
If it helps any, on my 32-bit Vista Ultimate Edition system,
Application.OperatingSystem returns this...

Windows (32-bit) NT 6.00

Rick
 
It is always better to use the Set variable name instead of its location in
the list (which could be different between different computers). For the
operating system, that would be 'OS' as in...

mysystem = Environ("OS")

However, this only return Windows_NT whereas the Application.OperatingSystem
statement mentioned elsewhere in this thread returns this..

Windows (32-bit) NT 6.00

which contains a little extra information. By the way, if you ever want to
see the various variable (names, for use in the Environ statement, and
settings), bring up a Command Prompt window (found in All Programs,
Accessories I think), type SET and hit the Enter key.

Rick
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top