Quote Originally Posted by AAraya View Post
Here's my updated version of your code fafalone (incorporating the suggestions & feedback that followed the original posting).

Code:
Public Function IsWin7OrGreater() As Boolean
    Dim lngMajor    As Long
    Dim lngMinor    As Long
    Dim lngBuild    As Long
    GetWinVerInfo lngMajor, lngMinor, lngBuild
    
    IsWin7OrGreater = (lngMajor > 6& Or (lngMajor = 6& And lngMinor >= 1&))
End Function

Public Function IsWin8OrGreater() As Boolean
    Dim lngMajor    As Long
    Dim lngMinor    As Long
    Dim lngBuild    As Long
    GetWinVerInfo lngMajor, lngMinor, lngBuild
    
    IsWin8OrGreater = (lngMajor > 6& Or (lngMajor = 6& And lngMinor >= 2&))
End Function

Public Function IsWin10OrGreater() As Boolean
    Dim lngMajor    As Long
    Dim lngMinor    As Long
    Dim lngBuild    As Long
    GetWinVerInfo lngMajor, lngMinor, lngBuild
    IsWin10OrGreater = (lngMajor >= 10&)
End Function

Public Function IsWin11OrGreater() As Boolean
    Dim lngMajor    As Long
    Dim lngMinor    As Long
    Dim lngBuild    As Long
    GetWinVerInfo lngMajor, lngMinor, lngBuild
    IsWin11OrGreater = (lngMajor > 10& Or (lngMajor = 10& And lngBuild >= 22000&))
End Function

Private Sub GetWinVerInfo(ByRef plngMajor As Long, ByRef plngMinor As Long, ByRef plngBuild As Long)
    CopyMemory plngMajor, ByVal &H7FFE026C, 4
    CopyMemory plngMinor, ByVal &H7FFE0270, 4
    CopyMemory plngBuild, ByVal &H7FFE0260, 4
End Sub
And for example, all this code will go to hell when defining Windows Millennium.