-\r
-; GetWindowsVersion\r
-;\r
-; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/\r
-; Updated by Joost Verburg\r
-;\r
-; Returns on top of stack\r
-;\r
-; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003)\r
-; or\r
-; '' (Unknown Windows Version)\r
-;\r
-; Usage:\r
-; Call GetWindowsVersion\r
-; Pop $R0\r
-; ; at this point $R0 is "NT 4.0" or whatnot\r
-\r
-Function GetWindowsVersion\r
-\r
- Push $R0\r
- Push $R1\r
-\r
- ClearErrors\r
-\r
- ReadRegStr $R0 HKLM \\r
- "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion\r
-\r
- IfErrors 0 lbl_winnt\r
- \r
- ; we are not NT\r
- ReadRegStr $R0 HKLM \\r
- "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber\r
-\r
- StrCpy $R1 $R0 1\r
- StrCmp $R1 '4' 0 lbl_error\r
-\r
- StrCpy $R1 $R0 3\r
-\r
- StrCmp $R1 '4.0' lbl_win32_95\r
- StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98\r
-\r
- lbl_win32_95:\r
- StrCpy $R0 '95'\r
- Goto lbl_done\r
-\r
- lbl_win32_98:\r
- StrCpy $R0 '98'\r
- Goto lbl_done\r
-\r
- lbl_win32_ME:\r
- StrCpy $R0 'ME'\r
- Goto lbl_done\r
-\r
- lbl_winnt:\r
-\r
- StrCpy $R1 $R0 1\r
-\r
- StrCmp $R1 '3' lbl_winnt_x\r
- StrCmp $R1 '4' lbl_winnt_x\r
-\r
- StrCpy $R1 $R0 3\r
-\r
- StrCmp $R1 '5.0' lbl_winnt_2000\r
- StrCmp $R1 '5.1' lbl_winnt_XP\r
- StrCmp $R1 '5.2' lbl_winnt_2003 lbl_error\r
-\r
- lbl_winnt_x:\r
- StrCpy $R0 "NT $R0" 6\r
- Goto lbl_done\r
-\r
- lbl_winnt_2000:\r
- Strcpy $R0 '2000'\r
- Goto lbl_done\r
-\r
- lbl_winnt_XP:\r
- Strcpy $R0 'XP'\r
- Goto lbl_done\r
-\r
- lbl_winnt_2003:\r
- Strcpy $R0 '2003'\r
- Goto lbl_done\r
-\r
- lbl_error:\r
- Strcpy $R0 ''\r
- lbl_done:\r
-\r
- Pop $R1\r
- Exch $R0\r
-\r
-FunctionEnd\r
+
+; GetWindowsVersion
+;
+; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
+; Updated by Joost Verburg
+;
+; Returns on top of stack
+;
+; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003)
+; or
+; '' (Unknown Windows Version)
+;
+; Usage:
+; Call GetWindowsVersion
+; Pop $R0
+; ; at this point $R0 is "NT 4.0" or whatnot
+
+Function GetWindowsVersion
+
+ Push $R0
+ Push $R1
+
+ ClearErrors
+
+ ReadRegStr $R0 HKLM \
+ "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
+
+ IfErrors 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_2003 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_2003:
+ Strcpy $R0 '2003'
+ Goto lbl_done
+
+ lbl_error:
+ Strcpy $R0 ''
+ lbl_done:
+
+ Pop $R1
+ Exch $R0
+
+FunctionEnd