Get Windows version: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
m (Adding new author and category links.) |
(added vista) |
||
Line 13: | Line 13: | ||
; Returns on top of stack | ; Returns on top of stack | ||
; | ; | ||
; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003) | ; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003, Vista) | ||
; or | ; or | ||
; '' (Unknown Windows Version) | ; '' (Unknown Windows Version) | ||
Line 69: | Line 69: | ||
StrCmp $R1 '5.0' lbl_winnt_2000 | StrCmp $R1 '5.0' lbl_winnt_2000 | ||
StrCmp $R1 '5.1' lbl_winnt_XP | StrCmp $R1 '5.1' lbl_winnt_XP | ||
StrCmp $R1 '5.2' lbl_winnt_2003 lbl_error | StrCmp $R1 '5.2' lbl_winnt_2003 | ||
StrCmp $R1 '6.0' lbl_winnt_vista lbl_error | |||
lbl_winnt_x: | lbl_winnt_x: | ||
Line 85: | Line 86: | ||
lbl_winnt_2003: | lbl_winnt_2003: | ||
Strcpy $R0 '2003' | Strcpy $R0 '2003' | ||
Goto lbl_done | |||
lbl_winnt_vista: | |||
Strcpy $R0 'Vista' | |||
Goto lbl_done | Goto lbl_done | ||
Revision as of 15:41, 29 September 2006
Author: sunjammer (talk, contrib) |
Description
This function gets which Microsoft Windows product the user uses.
The Script
; 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, Vista) ; 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 StrCmp $R1 '6.0' lbl_winnt_vista 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_winnt_vista: Strcpy $R0 'Vista' Goto lbl_done lbl_error: Strcpy $R0 '' lbl_done: Pop $R1 Exch $R0 FunctionEnd