Well, I guess I'll post my variation on MCA's script, including identifying WinNT Service Pack 6a installations.Bill
code:
; REM ** Set reusable variables for registry keys, O/S values
SELECT
CASE (@INWIN = 1)
$HKLMSS = READVALUE ("HKEY_LOCAL_MACHINE\SYSTEM\Select", "Current")
$CurCtrStr = "ControlSet00"+$HKLMSS
$HKLMSCCS = "HKEY_LOCAL_MACHINE\System\$CurCtrStr"
$HKLMSMWNTCV = "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion"
$OSSui = UCASE (READVALUE ("$HKLMSCCS\Control\ProductOptions", "ProductSuite"))
$OSTyp = UCASE (READVALUE ("$HKLMSCCS\Control\ProductOptions", "ProductType"))
$OSVer = READVALUE ("$HKLMSMWNTCV", "CurrentVersion")
CASE (1)
$HKLMSMWCV = "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion"
$OSSvc = LTRIM (RTRIM (UCASE (READVALUE ("$HKLMSMWCV", "SubVersionNumber"))))
$OSVer = READVALUE ("$HKLMSMWCV", "VersionNumber")
ENDSELECT
; REM ** Determine O/S, and O/S Level for Win9x boxes
SELECT
CASE (@DOS >= 5.1) $OS = "WinXP"
CASE (@DOS >= 5.0) $OS = "Win2K"
CASE (@DOS >= 4.0) AND (@INWIN = 1) $OS = "WinNT"
CASE ($OSVer >= "4.90.3000") $OS = "WinME" $OSLvl = "OEM"
CASE ($OSVer >= "4.10.2222") $OS = "Win98" $OSLvl = "SE"
CASE ($OSVer >= "4.10.1998") $OS = "Win98" $OSLvl = "OEM"
CASE (($OSVer >= "4.03.1214") AND ($OSSvc = "C")) $OS = "Win95" $OSLvl = "SR 2.5"
CASE (($OSVer >= "4.03.1212") AND ($OSVer =< "4.03.1214")) $OS = "Win95" $OSLvl = "SR 2.1"
CASE ($OSVer >= "4.00.1111") $OS = "Win95" $OSLvl = "SR 2"
CASE (($OSVer >= "4.00.950") AND ($OSSvc = "A")) $OS = "Win95" $OSLvl = "SP 1"
CASE ($OSVer >= "4.00.950") $OS = "Win95" $OSLvl = "OEM"
CASE (1)
$AdmErr = $Err+1
$OSAbv = "Unknown"
GOTO EndScript
ENDSELECT
; REM ** Determine WinXP/2K/NT Server/Workstation installed Service Pack level
IF (@INWIN = 1)
; REM ** Determine Service Pack level
$RC = READVALUE ("$HKLMSMWNTCV\Hotfix\Q246009", "Installed") ; REM ** Check if running WinNT SP6a
SELECT
CASE ($OS = "WinNT") AND ($RC = "1") $OSSvc = "Service Pack 6a" ; REM ** See http://www.microsoft.com/ntserver/support/faqs/sp6faq.asp (2001.12.26)
CASE ($OS = "WinXP") $OSSvc = LTRIM (RTRIM (READVALUE ("$HKLMSMWNTCV", "BuildLab")))
CASE (1) $OSSvc = LTRIM (RTRIM (READVALUE ("$HKLMSMWNTCV", "CSDVersion")))
ENDSELECT
; REM ** Determine WinXP/2K/NT Server/Workstation role
SELECT
CASE (INSTR ($OSSui, "TERMINAL SERVER") <> 0) $OSLvl = "Terminal" ; REM ** WinXP/2K/NT Terminal Server
CASE (INSTR ($OSSui, "ENTERPRISE") <> 0) $OSLvl = "Enterprise" ; REM ** WinNT Enterprise Server
CASE (INSTR ($OSTyp, "LANMANNT") <> 0) $OSLvl = "DomainController" ; REM ** WinNT Domain Controller
CASE (INSTR ($OSTyp, "SERVERNT") <> 0) $OSLvl = "MemberServer" ; REM ** WinNT Member Server
CASE (INSTR ($OSTyp, "WINNT") = 0) $OSLvl = "Server" ; REM ** Win2K Server (Domain/Member)
CASE (INSTR ($OSSui, "PERSONAL") <> 0) $OSLvl = "Home" ; REM ** WinXP Home Edition
CASE (INSTR ($OSTyp, "WINNT") <> 0) AND (@DOS >= 5.0) $OSLvl = "Pro" ; REM ** WinXP/2K Professional
CASE (INSTR ($OSTyp, "WINNT") <> 0) AND (@DOS >= 4.0) $OSLvl = "Wksta" ; REM ** WinNT Workstation
CASE (1)
$AdmErr = $Err+1
$OSLvl = "Unknown"
GOTO EndScript
ENDSELECT
ENDIF
[ 11 January 2002: Message edited by: bleonard ]
[ 11 January 2002: Message edited by: bleonard ]