[31634] | 1 | ; GetWindowsVersion
|
---|
| 2 | ;
|
---|
| 3 | ; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
|
---|
| 4 | ; Updated by Joost Verburg
|
---|
| 5 | ;
|
---|
| 6 | ; Returns on top of stack
|
---|
| 7 | ;
|
---|
| 8 | ; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003, Vista)
|
---|
| 9 | ; or
|
---|
| 10 | ; '' (Unknown Windows Version)
|
---|
| 11 | ;
|
---|
| 12 | ; Usage:
|
---|
| 13 | ; Call GetWindowsVersion
|
---|
| 14 | ; Pop $R0
|
---|
| 15 | ; ; at this point $R0 is "NT 4.0" or whatnot
|
---|
| 16 |
|
---|
| 17 | !macro GetWindowsVersion un
|
---|
| 18 | Function ${un}GetWindowsVersion
|
---|
| 19 |
|
---|
| 20 | Push $R0
|
---|
| 21 | Push $R1
|
---|
| 22 |
|
---|
| 23 | ClearErrors
|
---|
| 24 |
|
---|
| 25 | ReadRegStr $R0 HKLM \
|
---|
| 26 | "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
|
---|
| 27 |
|
---|
| 28 | IfErrors 0 lbl_winnt
|
---|
| 29 |
|
---|
| 30 | ; we are not NT
|
---|
| 31 | ReadRegStr $R0 HKLM \
|
---|
| 32 | "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber
|
---|
| 33 |
|
---|
| 34 | StrCpy $R1 $R0 1
|
---|
| 35 | StrCmp $R1 '4' 0 lbl_error
|
---|
| 36 |
|
---|
| 37 | StrCpy $R1 $R0 3
|
---|
| 38 |
|
---|
| 39 | StrCmp $R1 '4.0' lbl_win32_95
|
---|
| 40 | StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
|
---|
| 41 |
|
---|
| 42 | lbl_win32_95:
|
---|
| 43 | StrCpy $R0 '95'
|
---|
| 44 | Goto lbl_done
|
---|
| 45 |
|
---|
| 46 | lbl_win32_98:
|
---|
| 47 | StrCpy $R0 '98'
|
---|
| 48 | Goto lbl_done
|
---|
| 49 |
|
---|
| 50 | lbl_win32_ME:
|
---|
| 51 | StrCpy $R0 'ME'
|
---|
| 52 | Goto lbl_done
|
---|
| 53 |
|
---|
| 54 | lbl_winnt:
|
---|
| 55 |
|
---|
| 56 | StrCpy $R1 $R0 1
|
---|
| 57 |
|
---|
| 58 | StrCmp $R1 '3' lbl_winnt_x
|
---|
| 59 | StrCmp $R1 '4' lbl_winnt_x
|
---|
| 60 |
|
---|
| 61 | StrCpy $R1 $R0 3
|
---|
| 62 |
|
---|
| 63 | StrCmp $R1 '5.0' lbl_winnt_2000
|
---|
| 64 | StrCmp $R1 '5.1' lbl_winnt_XP
|
---|
| 65 | StrCmp $R1 '5.2' lbl_winnt_2003
|
---|
| 66 | StrCmp $R1 '6.0' lbl_winnt_vista
|
---|
[38751] | 67 | StrCmp $R1 '6.1' lbl_winnt_7
|
---|
[46838] | 68 | StrCmp $R1 '6.2' lbl_winnt_8
|
---|
| 69 | StrCmp $R1 '6.3' lbl_winnt_8_1 lbl_error
|
---|
[31634] | 70 |
|
---|
| 71 | lbl_winnt_x:
|
---|
| 72 | StrCpy $R0 "NT $R0" 6
|
---|
| 73 | Goto lbl_done
|
---|
| 74 |
|
---|
| 75 | lbl_winnt_2000:
|
---|
| 76 | Strcpy $R0 '2000'
|
---|
| 77 | Goto lbl_done
|
---|
| 78 |
|
---|
| 79 | lbl_winnt_XP:
|
---|
| 80 | Strcpy $R0 'XP'
|
---|
| 81 | Goto lbl_done
|
---|
| 82 |
|
---|
| 83 | lbl_winnt_2003:
|
---|
| 84 | Strcpy $R0 '2003'
|
---|
| 85 | Goto lbl_done
|
---|
| 86 |
|
---|
| 87 | lbl_winnt_vista:
|
---|
| 88 | Strcpy $R0 'Vista'
|
---|
| 89 | Goto lbl_done
|
---|
| 90 |
|
---|
| 91 | lbl_winnt_7:
|
---|
| 92 | Strcpy $R0 '7'
|
---|
| 93 | Goto lbl_done
|
---|
| 94 |
|
---|
[38751] | 95 | lbl_winnt_8:
|
---|
| 96 | Strcpy $R0 '8'
|
---|
| 97 | Goto lbl_done
|
---|
| 98 |
|
---|
[46838] | 99 | lbl_winnt_8_1: ; Also includes Windows Server 2012 R2
|
---|
| 100 | Strcpy $R0 '8_1'
|
---|
| 101 | Goto lbl_done
|
---|
| 102 |
|
---|
[31634] | 103 | lbl_error:
|
---|
| 104 | Strcpy $R0 ''
|
---|
| 105 | lbl_done:
|
---|
| 106 |
|
---|
| 107 | Pop $R1
|
---|
| 108 | Exch $R0
|
---|
| 109 |
|
---|
| 110 | FunctionEnd
|
---|
| 111 | !macroend
|
---|
| 112 | !insertmacro GetWindowsVersion ""
|
---|
| 113 | !insertmacro GetWindowsVersion "un."
|
---|