]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/win32/util.nsh
Add win32 directory
[bacula/bacula] / bacula / src / win32 / util.nsh
1 ; GetWindowsVersion
2  ;
3  ; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
4  ; Returns on top of stack
5  ;
6  ; Windows Version (95, 98, ME, NT x.x, 2000, XP, .NET Server)
7  ; or
8  ; '' (Unknown Windows Version)
9  ;
10  ; Usage:
11  ;   Call GetWindowsVersion
12  ;   Pop $R0
13  ;   ; at this point $R0 is "NT 4.0" or whatnot
14
15
16  Function IsNT
17    Push $R0
18    Push $R1
19    ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
20    StrCmp $R0 "" 0 lbl_winnt
21
22    StrCpy $R0 'false'
23    Goto lbl_done
24
25    lbl_winnt:
26     Strcpy $R0 'true'
27
28    lbl_done:
29    Pop $R1
30    Exch $R0
31  FunctionEnd
32  
33  Function GetWindowsVersion
34    Push $R0
35    Push $R1
36    ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
37    StrCmp $R0 "" 0 lbl_winnt
38    ; we are not NT.
39    ReadRegStr $R0 HKLM SOFTWARE\Microsoft\Windows\CurrentVersion VersionNumber
40
41    StrCpy $R1 $R0 1
42    StrCmp $R1 '4' 0 lbl_error
43
44    StrCpy $R1 $R0 3
45
46    StrCmp $R1 '4.0' lbl_win32_95
47    StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
48
49    lbl_win32_95:
50      StrCpy $R0 '95'
51    Goto lbl_done
52
53    lbl_win32_98:
54      StrCpy $R0 '98'
55    Goto lbl_done
56
57    lbl_win32_ME:
58      StrCpy $R0 'ME'
59    Goto lbl_done
60
61    lbl_winnt:
62
63      StrCpy $R1 $R0 1
64
65      StrCmp $R1 '3' lbl_winnt_x
66      StrCmp $R1 '4' lbl_winnt_x
67
68      StrCpy $R1 $R0 3
69
70      StrCmp $R1 '5.0' lbl_winnt_2000
71      StrCmp $R1 '5.1' lbl_winnt_XP
72      StrCmp $R1 '5.2' lbl_winnt_dotNET lbl_error
73
74      lbl_winnt_x:
75        StrCpy $R0 "NT $R0" 6
76      Goto lbl_done
77
78      lbl_winnt_2000:
79        Strcpy $R0 '2000'
80      Goto lbl_done
81
82      lbl_winnt_XP:
83        Strcpy $R0 'XP'
84      Goto lbl_done
85
86      lbl_winnt_dotNET:
87        Strcpy $R0 '.NET Server'
88      Goto lbl_done
89
90    lbl_error:
91      Strcpy $R0 ''
92    lbl_done:
93    Pop $R1
94    Exch $R0
95  FunctionEnd