78a072e1b56619e3230735ae073668311232ec94vboxsync; GetWindowsVersion
78a072e1b56619e3230735ae073668311232ec94vboxsync;
78a072e1b56619e3230735ae073668311232ec94vboxsync; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
78a072e1b56619e3230735ae073668311232ec94vboxsync; Updated by Joost Verburg
78a072e1b56619e3230735ae073668311232ec94vboxsync;
78a072e1b56619e3230735ae073668311232ec94vboxsync; Returns on top of stack
78a072e1b56619e3230735ae073668311232ec94vboxsync;
78a072e1b56619e3230735ae073668311232ec94vboxsync; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003, Vista)
78a072e1b56619e3230735ae073668311232ec94vboxsync; or
78a072e1b56619e3230735ae073668311232ec94vboxsync; '' (Unknown Windows Version)
78a072e1b56619e3230735ae073668311232ec94vboxsync;
78a072e1b56619e3230735ae073668311232ec94vboxsync; Usage:
78a072e1b56619e3230735ae073668311232ec94vboxsync; Call GetWindowsVersion
78a072e1b56619e3230735ae073668311232ec94vboxsync; Pop $R0
78a072e1b56619e3230735ae073668311232ec94vboxsync; ; at this point $R0 is "NT 4.0" or whatnot
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync!macro GetWindowsVersion un
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunction ${un}GetWindowsVersion
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Push $R0
78a072e1b56619e3230735ae073668311232ec94vboxsync Push $R1
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ClearErrors
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ReadRegStr $R0 HKLM \
78a072e1b56619e3230735ae073668311232ec94vboxsync "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync IfErrors 0 lbl_winnt
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ; we are not NT
78a072e1b56619e3230735ae073668311232ec94vboxsync ReadRegStr $R0 HKLM \
78a072e1b56619e3230735ae073668311232ec94vboxsync "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCpy $R1 $R0 1
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCmp $R1 '4' 0 lbl_error
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCpy $R1 $R0 3
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCmp $R1 '4.0' lbl_win32_95
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync lbl_win32_95:
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCpy $R0 '95'
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto lbl_done
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync lbl_win32_98:
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCpy $R0 '98'
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto lbl_done
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync lbl_win32_ME:
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCpy $R0 'ME'
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto lbl_done
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync lbl_winnt:
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCpy $R1 $R0 1
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCmp $R1 '3' lbl_winnt_x
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCmp $R1 '4' lbl_winnt_x
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCpy $R1 $R0 3
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCmp $R1 '5.0' lbl_winnt_2000
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCmp $R1 '5.1' lbl_winnt_XP
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCmp $R1 '5.2' lbl_winnt_2003
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCmp $R1 '6.0' lbl_winnt_vista
36dd9dabf3f64468206cb74145b51245cf7fde54vboxsync StrCmp $R1 '6.1' lbl_winnt_7
168f0d5dcd9366f5e1c22fcc49f8dc5a20d4686evboxsync StrCmp $R1 '6.2' lbl_winnt_8
063595c74276001ecaa7ee2cf27471729212ab78vboxsync
063595c74276001ecaa7ee2cf27471729212ab78vboxsync ; Windows 10 preview 9926 has CurrentVersion == 6.3
063595c74276001ecaa7ee2cf27471729212ab78vboxsync ; Check Windows 10 registry values
063595c74276001ecaa7ee2cf27471729212ab78vboxsync ReadRegDWORD $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "CurrentMajorVersionNumber"
063595c74276001ecaa7ee2cf27471729212ab78vboxsync ${If} $R0 == "10"
063595c74276001ecaa7ee2cf27471729212ab78vboxsync Goto lbl_winnt_10
063595c74276001ecaa7ee2cf27471729212ab78vboxsync ${EndIf}
063595c74276001ecaa7ee2cf27471729212ab78vboxsync
6fd13c2e3e855d7f5a7147cb0414af050e1503e6vboxsync StrCmp $R1 '6.3' lbl_winnt_8_1
6fd13c2e3e855d7f5a7147cb0414af050e1503e6vboxsync StrCmp $R1 '6.4' lbl_winnt_10 lbl_error
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync lbl_winnt_x:
78a072e1b56619e3230735ae073668311232ec94vboxsync StrCpy $R0 "NT $R0" 6
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto lbl_done
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync lbl_winnt_2000:
78a072e1b56619e3230735ae073668311232ec94vboxsync Strcpy $R0 '2000'
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto lbl_done
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync lbl_winnt_XP:
78a072e1b56619e3230735ae073668311232ec94vboxsync Strcpy $R0 'XP'
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto lbl_done
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync lbl_winnt_2003:
78a072e1b56619e3230735ae073668311232ec94vboxsync Strcpy $R0 '2003'
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto lbl_done
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync lbl_winnt_vista:
78a072e1b56619e3230735ae073668311232ec94vboxsync Strcpy $R0 'Vista'
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto lbl_done
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync lbl_winnt_7:
78a072e1b56619e3230735ae073668311232ec94vboxsync Strcpy $R0 '7'
78a072e1b56619e3230735ae073668311232ec94vboxsync Goto lbl_done
78a072e1b56619e3230735ae073668311232ec94vboxsync
36dd9dabf3f64468206cb74145b51245cf7fde54vboxsync lbl_winnt_8:
36dd9dabf3f64468206cb74145b51245cf7fde54vboxsync Strcpy $R0 '8'
36dd9dabf3f64468206cb74145b51245cf7fde54vboxsync Goto lbl_done
36dd9dabf3f64468206cb74145b51245cf7fde54vboxsync
168f0d5dcd9366f5e1c22fcc49f8dc5a20d4686evboxsync lbl_winnt_8_1: ; Also includes Windows Server 2012 R2
168f0d5dcd9366f5e1c22fcc49f8dc5a20d4686evboxsync Strcpy $R0 '8_1'
168f0d5dcd9366f5e1c22fcc49f8dc5a20d4686evboxsync Goto lbl_done
168f0d5dcd9366f5e1c22fcc49f8dc5a20d4686evboxsync
6fd13c2e3e855d7f5a7147cb0414af050e1503e6vboxsync lbl_winnt_10:
6fd13c2e3e855d7f5a7147cb0414af050e1503e6vboxsync Strcpy $R0 '10'
6fd13c2e3e855d7f5a7147cb0414af050e1503e6vboxsync Goto lbl_done
6fd13c2e3e855d7f5a7147cb0414af050e1503e6vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync lbl_error:
78a072e1b56619e3230735ae073668311232ec94vboxsync Strcpy $R0 ''
78a072e1b56619e3230735ae073668311232ec94vboxsync lbl_done:
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Pop $R1
78a072e1b56619e3230735ae073668311232ec94vboxsync Exch $R0
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncFunctionEnd
78a072e1b56619e3230735ae073668311232ec94vboxsync!macroend
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro GetWindowsVersion ""
78a072e1b56619e3230735ae073668311232ec94vboxsync!insertmacro GetWindowsVersion "un."