; GetWindowsVersion
 ;
 ; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
 ; Returns on top of stack
 ;
 ; Windows Version (95, 98, ME, NT x.x, 2000, XP, .NET Server)
 ; or
 ; '' (Unknown Windows Version)
 ;
 ; Usage:
 ;   Call GetWindowsVersion
 ;   Pop $R0
 ;   ; at this point $R0 is "NT 4.0" or whatnot


 Function IsNT
   Push $R0
   Push $R1
   ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
   StrCmp $R0 "" 0 lbl_winnt

   StrCpy $R0 'false'
   Goto lbl_done

   lbl_winnt:
    Strcpy $R0 'true'

   lbl_done:
   Pop $R1
   Exch $R0
 FunctionEnd
 
; Function GetWindowsVersion
;   Push $R0
;   Push $R1
;   ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
;   StrCmp $R0 "" 0 lbl_winnt
;   ; we are not NT.
;   ReadRegStr $R0 HKLM SOFTWARE\Microsoft\Windows\CurrentVersion VersionNumber

;   StrCpy $R1 $R0 1
;   StrCmp $R1 '4' 0 lbl_error

;   StrCpy $R1 $R0 3

;   StrCmp $R1 '4.0' lbl_win32_95
;   StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98

;   lbl_win32_95:
;     StrCpy $R0 '95'
;   Goto lbl_done

;   lbl_win32_98:
;     StrCpy $R0 '98'
;   Goto lbl_done

;   lbl_win32_ME:
;     StrCpy $R0 'ME'
;   Goto lbl_done

;   lbl_winnt:

;     StrCpy $R1 $R0 1

;     StrCmp $R1 '3' lbl_winnt_x
;     StrCmp $R1 '4' lbl_winnt_x

;     StrCpy $R1 $R0 3

;     StrCmp $R1 '5.0' lbl_winnt_2000
;     StrCmp $R1 '5.1' lbl_winnt_XP
;     StrCmp $R1 '5.2' lbl_winnt_dotNET lbl_error

;     lbl_winnt_x:
;       StrCpy $R0 "NT $R0" 6
;     Goto lbl_done

;     lbl_winnt_2000:
;       Strcpy $R0 '2000'
;     Goto lbl_done

;     lbl_winnt_XP:
;       Strcpy $R0 'XP'
;     Goto lbl_done

;     lbl_winnt_dotNET:
;       Strcpy $R0 '.NET Server'
;     Goto lbl_done

;   lbl_error:
;     Strcpy $R0 ''
;   lbl_done:
;   Pop $R1
;   Exch $R0
; FunctionEnd
