; IF setconsole("hide") ; ENDIF ; ; NT/95 calculates os - Kixtart 3.62, 3.63, 4.00 ; ; (c) scripting@wanadoo.nl - 2000, 2001 ; ; vs 2.09 - program (calculates OS version with service pack) ; ; 1.00 (20000715) original version ; 2.00 (20010330) - add "windows ME" ; - returns $os + $os_type values ; 2.01 (20010401) - kixtart 2001 beta1 compliancy ; 2.02 (20010405) - remove cutting $os value ; 2.03 (20010701) - add "windows XP beta" + "windows 2000 terminal server" ; (input by NTDOC) ; 2.04 (20010725) - minor fix ; 2.05 (20011115) - fix "windows 2000 terminal server" was presented as ; "windows 2000 server" ; (input by NTDOC) ; 2.06 (20011115) - add "windows NT terminal server" ; (input by Mike Wade) ; 2.07 (20011115) - add "windows XP terminal server" ; - improvement terminal server ; - suppress SetConsole("hide") ; 2.08 (20011201) - add "windows XP home" (input by Mike Wade) ; 2.09 (20011201) - incorrect "service pack" result by "Windows2000 SP3, RC 3.51" ; (input by NTDOC) ; $prgm_version="2.09" IF (@inwin = 1) $NT_mode="yes" ELSE $NT_mode="no" ENDIF $os="" $os_dos=@dos $os_product=ReadValue("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ProductOptions","ProductType") $os_productSuite=ReadValue("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ProductOptions","ProductSuite") $os_service_pack="" $os_subversion=ReadValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion","SubVersionNumber") SELECT CASE ($NT_mode = "yes") AND ($os_product <> "WinNT") AND ($os_dos = "5.1") AND (Instr($os_productSuite,"Terminal Server") <> 0) $os="XP_Terminal_Server" CASE ($NT_mode = "yes") AND ($os_product <> "WinNT") AND ($os_dos = "5.1") ; - Windows XP Server $os="XP_Server" CASE ($NT_mode = "yes") AND ($os_product = "WinNT") AND ($os_dos = "5.1") AND ($os_productSuite = "personal") ; - Windows XP Home $os="XP_Home" CASE ($NT_mode = "yes") AND ($os_product = "WinNT") AND ($os_dos = "5.1") ; - Windows XP Professional $os="XP_Professional" CASE ($NT_mode = "yes") AND ($os_product <> "WinNT") AND ($os_dos = "5.0") AND (Instr($os_productSuite,"Terminal Server") <> 0) $os="W2K_Terminal_Server" CASE ($NT_mode = "yes") AND ($os_product <> "WinNT") AND ($os_dos = "5.0") ; - Windows 2000 - $os="W2K_Server" CASE ($NT_mode = "yes") AND ($os_product = "WinNT") AND ($os_dos = "5.0") $os="W2K_Professional" CASE ($NT_mode = "yes") AND ($os_product = "LANMANNT") ; - Windows NT - $os="NT4_Domain_Controller" CASE ($NT_mode = "yes") AND ($os_product = "ServerNT") AND (Instr($os_productSuite,"Terminal Server") <> 0) $os="NT4_Terminal_Server" CASE ($NT_mode = "yes") AND ($os_product = "ServerNT") $os="NT4_Member_Server" CASE ($NT_mode = "yes") AND ($os_product = "WinNT") $os="NT4" CASE ($NT_mode <> "yes") AND (@dos = "4.90") $os="ME" CASE ($NT_mode <> "yes") AND ($os_dos = "4.10") AND (INSTR(LCASE($os_subversion),"c") <> 0) ; - Windows 98 - $os="W98c" CASE ($NT_mode <> "yes") AND ($os_dos = "4.10") AND (INSTR(LCASE($os_subversion),"b") <> 0) $os="W98b" CASE ($NT_mode <> "yes") AND ($os_dos = "4.10") AND (INSTR(LCASE($os_subversion),"a") <> 0) $os="W98a" CASE ($NT_mode <> "yes") AND ($os_dos = "4.10") $os="W98" CASE ($NT_mode <> "yes") AND ($os_dos = "4.0") AND (INSTR(LCASE($os_subversion),"c") <> 0) ; - Windows 95 - $os="W95c" CASE ($NT_mode <> "yes") AND ($os_dos = "4.0") AND (INSTR(LCASE($os_subversion),"b") <> 0) $os="W95b" CASE ($NT_mode <> "yes") AND ($os_dos = "4.0") AND (INSTR(LCASE($os_subversion),"a") <> 0) $os="W95a" CASE ($NT_mode <> "yes") AND ($os_dos = "4.0") $os="W95" CASE 1 $os="???" ; - undetermined - ENDSELECT ; $os_service_pack="" SELECT CASE ($NT_mode = "yes") AND ($os_dos = "5.1") ; - Windows XP $os_service_pack=ReadValue("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion","BuildLab") IF (len($os_service_pack) <> 0) $os_service_pack=LTRIM(RTRIM($os_service_pack)) $os=substr($os,1,3)+"_"+LTRIM(RTRIM($os_service_pack)) ENDIF CASE ($NT_mode = "yes") AND ($os_dos <> "5.1") ; Windows NT4 + W2K $os_service_pack=ReadValue("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion","CSDVersion") IF (len($os_service_pack) <> 0) $os_service_pack=LTRIM(RTRIM($os_service_pack)) IF (instr($os_service_pack,",") <> 0) $os=substr($os,1,3)+"_"+substr($os_service_pack,instr($os_service_pack,",")-1,1) ELSE $os=substr($os,1,3)+"_"+substr($os_service_pack,len($os_service_pack),1) ENDIF ENDIF CASE 1 ; Windows 95, 98 + ME ENDSELECT ; $os_type="" $os_dos=@dos SELECT CASE ($NT_mode = "yes") AND ($os_dos = "5.1") ; - Windows XP - $os_type="XP" CASE ($NT_mode = "yes") AND ($os_dos = "5.0") ; - Windows 2000 - $os_type="W2K" CASE ($NT_mode = "yes") ; - Windows NT - $os_type="NT4" CASE ($NT_mode <> "yes") AND ($os_dos = "4.90") ; - Windows ME - $os_type="ME" CASE ($NT_mode <> "yes") AND ($os_dos = "4.10") ; - Windows 98 - $os_type="W98" CASE ($NT_mode <> "yes") AND ($os_dos = "4.0") ; - Windows 95 - $os_type="W95" CASE 1 $os_type="???" ; - undetermined - ENDSELECT $os_type=LTRIM(RTRIM(substr($os_type+" ",1,3))) ; IF ($NT_mode = "yes") ? "$$os "+$os ; <--- $os_type + service pack code ? "$$os_type "+$os_type ? "$$os_service_pack "+$os_service_pack ELSE ? "$$os "+$os ; <--- $os_type + service pack code ? "$$os_type "+$os_type ENDIF