#76716 - 2003-09-25 02:31 PM
Re: Office 2000 Service packs, etc...
|
masken
MM club member
   
Registered: 2000-11-27
Posts: 1222
Loc: Gothenburg, Sweden
|
hmm... perhaps scanning HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall would be a better approach?
Ie; "DisplayName" & "DisplayVersion" ?
Microsoft Visio Microsoft FrontPage Microsoft Office
You'd need to filter it though.. (ie; "Microsoft Office 2000 Resource Kit Tools and Utilities").. hmm..
btw; found some old stuff lying around:
code:
;=== Office Applikationer inkluderade: ;=== Access, Excel, FrontPage, Outlook, PowerPoint, PUblisher, Word ;=== ;=== Distributioner: 2002 (XP) 2000 97 95 ;=== ----------------- ----------------- --------------- ---------- -------- ;=== Premium Spec. Ed. W/E/O/PP/A/F/PU n/a n/a n/a ;=== Developer W/E/O/PP/A/F n/a n/a n/a ;=== Premium n/a A/E/F/O/PP/PU/W n/a n/a ;=== Professional W/E/O/PP/A A/E/O/PP/PU/W A/E/O/PP/W A/E/PP/W ;=== Small Business W/E/O/PU E/O/PU/W E/O/PU/W n/a ;=== Standard W/E/O/PP E/O/PP/W E/O/PP/W E/PP/W ;=== ;=== MS Office versions information från TechNet dokument: ;=== ----------------------------------------------------- ;=== Q248710 (97), Q255275 (2000), Readme.doc w/2000 SR-1 SP2 ;==============================================================================
; TODO: ; Visio32.exe ; Office XP ; MS Project? $CR = CHR(13) + CHR(10) $RC = "" $LogDir = "\\someserver\somedir"
$HKLMAPPS = "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths"
; *** Set buckets to numeric zero, blanks, for clean export file entries for systems w/out some apps installed. $OSW2K = VAL("0") $OSWNT = VAL("0") $OSWME = VAL("0") $OSW98 = VAL("0") $OSW95 = VAL("0") $OfcPre = VAL("0") $OfcPro = VAL("0") $OfcBiz = VAL("0") $OfcStd = VAL("0") $OfcNon = VAL("0") $OfcErr = VAL("0") $OfcZer = VAL("0") $Ac = VAL("0") $Ex = VAL("0") $Fp = VAL("0") $Ou = VAL("0") $Pp = VAL("0") $Pu = VAL("0") $Wo = VAL("0") $VerAc = VAL("0") $VerEx = VAL("0") $VerFp = VAL("0") $VerOu = VAL("0") $VerPp = VAL("0") $VerPu = VAL("0") $VerWo = VAL("0") $LvlAc = "" $LvlEx = "" $LvlFp = "" $LvlOu = "" $LvlPp = "" $LvlPu = "" $LvlWo = "" $OfcVer = "0" $ErrCnt = "0" $ErrVer = "0"
; *** Create array and load with MS Office Application executables $x = 0 DIM $RegKey[8] $RegKey[$x] = "msaccess.exe" $x = $x + 1 $RegKey[$x] = "excel.exe" $x = $x + 1 $RegKey[$x] = "frontpg.exe" $x = $x + 1 $RegKey[$x] = "outlook.exe" $x = $x + 1 $RegKey[$x] = "powerpnt.exe" $x = $x + 1 $RegKey[$x] = "mspub.exe" $x = $x + 1 $RegKey[$x] = "winword.exe" $x = $x + 1
$x2 = 0 DO $TmpApp = SUBSTR ($RegKey[$x2], 1, LEN ($RegKey[$x2])) $RC = EXISTKEY ("$HKLMAPPS\$TmpApp") ; *** Check, is this application even in the registry? IF $RC = 0 $TmpDir = READVALUE ("$HKLMAPPS\$TmpApp", "Path") $RC = EXIST ("$TmpDir\$TmpApp") ; *** Check, is this application actually on the system? IF $RC = 1 $TmpVer = GETFILEVERSION ("$TmpDir\$TmpApp") SELECT CASE(SUBSTR ($TmpVer, 1, 1) = "9") $OfcVer = "2000" CASE(SUBSTR ($TmpVer, 1, 1) = "8") $OfcVer = "97" CASE(SUBSTR ($TmpVer, 1, 1) = "7") $OfcVer = "95" CASE((SUBSTR ($TmpVer, 1, 1) = "4") AND ($TmpApp = "frontpg.exe")) $OfcVer = "2000" CASE((SUBSTR ($TmpVer, 1, 1) < "4") AND ($TmpApp = "frontpg.exe")) $OfcVer = "97" CASE((SUBSTR ($TmpVer, 1, 1) = "6") AND ($TmpApp = "mspub.exe")) $OfcVer = "2000" CASE((SUBSTR ($TmpVer, 1, 1) < "6") AND ($TmpApp = "mspub.exe")) $OfcVer = "97" ENDSELECT ; *** Tmp variables to determine versions/build of each application. $TmpLvl = SUBSTR ($TmpVer, 1, 4) ; *** 1st 4 characters of ver (ex: 8.0a) $TmpBld = SUBSTR ($TmpVer, LEN ($TmpVer)-3, LEN ($TmpVer)) ; *** Last 4 characters of ver (build; ex: 4307)
SELECT CASE($TmpApp = "msaccess.exe") SELECT CASE(($TmpLvl >= "9.0.") AND ($TmpBld >= "4506")) $LvlAc = "SR-1 SP2" CASE(($TmpLvl >= "9.0.") AND ($TmpBld >= "3821")) $LvlAc = "SR-1" CASE(($TmpLvl >= "9.0.") AND ($TmpBld < "3821")) $LvlAc = "" CASE(($TmpLvl >= "8.0.") AND ($TmpBld >= "5903")) $LvlAc = "SR-2" CASE(($TmpLvl >= "8.0.") AND ($TmpBld >= "4122")) $LvlAc = "SR-1" CASE(1) $LvlAc = "" ENDSELECT $Ac = VAL("1") $VerAc = $TmpVer CASE($TmpApp = "excel.exe") SELECT CASE(($TmpLvl >= "9.0.") AND ($TmpBld >= "4430")) $LvlEx = "SR-1 SP2" CASE(($TmpLvl >= "9.0.") AND ($TmpBld >= "3821")) $LvlEx = "SR-1" CASE(($TmpLvl >= "9.0.") AND ($TmpBld < "3821")) $LvlEx = "" CASE(($TmpLvl >= "8.0e") AND ($TmpLvl < "8.0z")) $LvlEx = "SR-2" CASE(($TmpLvl >= "8.0a") AND ($TmpLvl < "8.0e")) $LvlEx = "SR-1" CASE(1) $LvlEx = "" ENDSELECT $Ex = VAL("1") $VerEx = $TmpVer CASE($TmpApp = "frontpg.exe") SELECT CASE(($TmpLvl >= "4.0.") AND ($TmpBld >= "4426")) $LvlFp = "SR-1 SP2" CASE(($TmpLvl >= "4.0.") AND ($TmpBld >= "3821")) $LvlFp = "SR-1" CASE(($TmpLvl >= "4.0.") AND ($TmpBld >= "2720")) $LvlFp = "" CASE(1) $LvlFp = "" ENDSELECT $Fp = VAL("1") $VerFp = $TmpVer CASE($TmpApp = "outlook.exe") SELECT CASE(($TmpLvl >= "9.0.") AND ($TmpBld >= "3821")) $LvlOu = "SR-1" CASE(($TmpLvl >= "9.0.") AND ($TmpBld < "3821")) $LvlOu = "" CASE(($TmpLvl >= "8.0.") AND ($TmpBld >= "5305")) $LvlOu = "SR-2" ; *** Outlook 98 CASE(($TmpLvl >= "8.0.") AND ($TmpBld >= "5104")) $LvlOu = "SR-1" CASE(($TmpLvl >= "8.04") AND ($TmpBld >= "5619")) $LvlOu = "SR-2" ; *** Outlook 97 CASE(($TmpLvl >= "8.02") AND ($TmpBld >= "4212")) $LvlOu = "SR-1" CASE(1) $LvlOu = "" ENDSELECT $Ou = VAL("1") $VerOu = $TmpVer CASE($TmpApp = "powerpnt.exe") SELECT CASE(($TmpLvl >= "9.0.") AND ($TmpBld >= "4527")) $LvlPp = "SR-1 SP2" CASE(($TmpLvl >= "9.0.") AND ($TmpBld >= "3821")) $LvlPp = "SR-1" CASE(($TmpLvl >= "9.0.") AND ($TmpBld < "3821")) $LvlPp = "" CASE(($TmpLvl >= "8.0b") AND ($TmpBld >= "5507")) $LvlPp = "SR-2" CASE(($TmpLvl < "8.0b") AND ($TmpBld >= "4208")) $LvlPp = "SR-1" CASE(1) $LvlPp = "" ENDSELECT $Pp = VAL("1") $VerPp = $TmpVer CASE($TmpApp = "mspub.exe") SELECT CASE($TmpLvl = "5.0.") $LvlPu = "98" CASE($TmpLvl = "4.0.") $LvlPu = "97" CASE(1) $LvlPu = "" ENDSELECT $Pu = VAL("1") $VerPu = $TmpVer CASE($TmpApp = "winword.exe") SELECT CASE(($TmpLvl >= "9.0.") AND ($TmpBld >= "4527")) $LvlWo = "SR-1 SP2" CASE(($TmpLvl >= "9.0.") AND ($TmpBld >= "3821")) $LvlWo = "SR-1" CASE(($TmpLvl >= "9.0.") AND ($TmpBld < "3821")) $LvlWo = "" CASE(($TmpLvl >= "8.0b") AND ($TmpBld >= "5622")) $LvlWo = "SR-2" CASE(($TmpLvl >= "8.0b") AND ($TmpBld >= "4412")) $LvlWo = "SR-1" CASE(1) $LvlWo = "" ENDSELECT $Wo = VAL("1") $VerWo = $TmpVer ENDSELECT ENDIF ENDIF ; *** Set check value, by 1st app counted, to flag if diff versions of suite components (ex: Word 2000 & Access 97) SELECT CASE(($ErrCnt = "1") AND ($ErrVer = $OfcVer)) $VerErr = "0" CASE(($ErrCnt = "1") AND ($ErrVer <> $OfcVer)) $VerErr = "1" CASE($OfcVer <> "0") $ErrVer = $OfcVer $ErrCnt = "1" CASE($OfcVer = "0") ; *** Do nothing until a version found. ENDSELECT $x2 = $x2 + 1 UNTIL $x2 = $x
; *** Numeric value to tell us how many Office applications of the suite actually installed. $AppCnt = ($Ex + $Fp + $Ac + $Pu + $Ou + $Pp + $Wo) IF $AppCnt = "0" ; *** No office apps installed $OfcVer = "NoApps" $OfcAbv = "NoOfc" ENDIF ; *** Based upon count of apps installed, assign Suite value. With common apps, must weed through non-common first. SELECT CASE($OfcVer = "2000") SELECT CASE($AppCnt = "7") ; *** Only Premium would have all components $OfcAbv = "Pre" CASE(($AppCnt >= "5") AND ($Fp = "1")) ; *** Only Premium would have FrontPage $OfcAbv = "Pre" CASE(($AppCnt >= "5") AND ($Fp <> "1")) ; *** No FrontPage, so likely Professional $OfcAbv = "Pro" CASE(($AppCnt >= "3") AND ($Ac = "1")) ; *** Access not in Standard or Small Business $OfcAbv = "Pro" CASE(($AppCnt >= "3") AND ($Pu = "1")) ; *** Publisher not in Standard $OfcAbv = "Biz" CASE(($AppCnt >= "3") AND ($Pp = "1")) ; *** PowerPoint not in Small Business $OfcAbv = "Std" CASE($AppCnt = "3") ; *** All common apps, likely Standard $OfcAbv = "Std" CASE($AppCnt < "3") ; *** Too few apps to determine if really Suite $OfcAbv = "Non" CASE($AppCnt > "7") ; *** Too many apps counted. Really Office 2000? $OfcAbv = "Err" GOSUB ScriptError ENDSELECT $O2KPID = "" $O2KKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\9.0\Registration\ProductID" $O2KEntry = ENUMVALUE("$O2KKey", 0) $O2KPID = READVALUE("$O2KKey", "$O2KEntry") IF $O2KPID = "" $O2KPID = "Err" ENDIF CASE($OfcVer = "97") SELECT CASE($AppCnt = "5") ; *** Only Professional would have all components $OfcAbv = "Pro" CASE(($AppCnt >= "3") AND ($Ac = "1")) ; *** Only Professional would have Access $OfcAbv = "Pro" CASE(($AppCnt >= "3") AND ($Pu = "1")) ; *** Publisher not in Standard $OfcAbv = "Biz" CASE(($AppCnt >= "3") AND ($Pp = "1")) ; *** PowerPoint not in Small Business $OfcAbv = "Std" CASE($AppCnt = "3") ; *** All common components, likely Standard $OfcAbv = "Std" CASE($AppCnt < "3") ; *** Too few apps to determine if really Suite $OfcAbv = "Non" CASE($AppCnt > "5") ; *** Too many apps counted. Really Office 97? $OfcAbv = "Err" GOSUB ScriptError ENDSELECT SELECT CASE(EXISTKEY("HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Office 97") = 0) $O97Key = "HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Office 97" $KeySub = ENUMKEY("$O97Key", 0) IF @ERROR = 0 $Key = $O97Key + "\" + $KeySub + "\Registration" IF EXISTKEY("$Key") = 0 $O97PID = READVALUE("$Key", "ProductID") $O97PName = READVALUE("$Key", "ProductName") ELSE $O97PID = "Err" $O97PName = "Err" ENDIF ELSE $O97PID = "Err" $O97PName = "Err" ENDIF CASE(EXISTKEY("HKEY_LOCAL_MACHINE\Software\Microsoft\MS Office 97 Professional") = 0) $O97Key = "HKEY_LOCAL_MACHINE\Software\Microsoft\MS Office 97 Professional" $KeySub = ENUMKEY("$O97Key", 0) IF @ERROR = 0 $Key = $O97Key + "\" + $KeySub + "\Registration" IF EXISTKEY("$Key") = 0 $O97PID = READVALUE("$Key", "ProductID") $O97PName = READVALUE("$Key", "ProductName") ELSE $O97PID = "Err" $O97PName = "Err" ENDIF ELSE $O97PID = "Err" $O97PName = "Err" ENDIF CASE 1 ; *** Standalone installation/s $O97App = "HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Outlook" IF EXISTKEY("$O97App") = 0 $OuID = "" $OuName = "" $KeySub = ENUMKEY("$O97App", 0) IF @ERROR = 0 $Key = $O97App + "\" + $KeySub + "\Registration" IF EXISTKEY("$Key") = 0 $OuID = READVALUE("$Key", "ProductID") $OuName = READVALUE("$Key", "ProductName") ENDIF ENDIF IF $OuID = "" $OuID = "Err" ENDIF IF $OuName = "" $OuName = "Err" ENDIF ENDIF $O97App = "HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Word för Windows" IF EXISTKEY("$O97App") = 0 $WoID = "" $WoName = "" $KeySub = ENUMKEY("$O97App", 0) IF @ERROR = 0 $Key = $O97App + "\" + $KeySub + "\Registration" IF EXISTKEY("$Key") = 0 $WoID = READVALUE("$Key", "ProductID") $WoName = READVALUE("$Key", "ProductName") ENDIF ENDIF IF $WoID = "" $WoID = "Err" ENDIF IF $WoName = "" $WoName = "Err" ENDIF ENDIF $O97App = "HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Excel 97" IF EXISTKEY("$O97App") = 0 $ExID = "" $ExName = "" $KeySub = ENUMKEY("$O97App", 0) IF @ERROR = 0 $Key = $O97App + "\" + $KeySub + "\Registration" IF EXISTKEY("$Key") = 0 $ExID = READVALUE("$Key", "ProductID") $ExName = READVALUE("$Key", "ProductName") ENDIF ENDIF IF $ExID = "" $ExID = "Err" ENDIF IF $ExName = "" $ExName = "Err" ENDIF ENDIF ENDSELECT CASE($OfcVer = "95") SELECT CASE($AppCnt = "4") ; *** Only Professional would have all components $OfcAbv = "Pro" CASE(($AppCnt >= "3") AND ($Ac = "1")) ; *** Only Professional would have Access $OfcAbv = "Pro" CASE(($AppCnt >= "3") AND ($Ac <> "1")) ; *** Access not in Standard $OfcAbv = "Std" CASE($AppCnt < "3") ; *** Too few apps to determine if really Suite $OfcAbv = "Non" CASE($AppCnt > "4") ; *** Too many apps counted. Really Office 95? $OfcAbv = "Err" GOSUB ScriptError ENDSELECT ENDSELECT
; *** Preps numeric values of apps for pipe-delimited file for Excel importation. SELECT CASE($OfcAbv = "Pre") $OfcPre = "1" $OfcNam = "Premium" CASE($OfcAbv = "Pro") $OfcPro = "1" $OfcNam = "Professional" CASE($OfcAbv = "Biz") $OfcBiz = "1" $OfcNam = "Small Business" CASE($OfcAbv = "Std") $OfcStd = "1" $OfcNam = "Standard" CASE($OfcAbv = "Non") $OfcNon = "1" $OfcNam = "Not a Suite" CASE($OfcAbv = "Err") $OfcErr = "1" $OfcNam = "Error in inventory, last ver. $OfcVer" CASE($OfcAbv = "NoOfc") $OfcZer = "1" $OfcNam = "No apps installed" ENDSELECT
; *** Preps numeric values of O/S for pipe-delimited file for Excel importation. SELECT CASE(INSTR("$OS", "2000") <> 0) $OSW2K = "1" CASE(INSTR("$OS", "WinNT") <> 0) $OSWNT = "1" CASE(INSTR("$OS", "ME") <> 0) $OSWME = "1" CASE(INSTR("$OS", "98") <> 0) $OSW98 = "1" CASE(INSTR("$OS", "95") <> 0) $OSW95 = "1" ENDSELECT
; *** File name based upon version-error condition SELECT CASE($VerErr = "0") $OfcFil = $OfcVer + $OfcAbv CASE($VerErr = "1") $OfcFil = "VerErr" ENDSELECT SELECT CASE($OfcZer = "0") $OfcSte = "Office $OfcVer $OfcNam" CASE($OfcZer = "1") $OfcSte = "No Apps Installed" $OfcFil = $OfcVer ENDSELECT
; *** Null those values that hasn't been assigned. IF $WoID = "" $WoID = 0 ENDIF IF $WoName = "" $WoName = 0 ENDIF IF $ExID = "" $ExID = 0 ENDIF IF $ExName = "" $ExName = 0 ENDIF IF $OuID = "" $OuID = 0 ENDIF IF $OuName = "" $OuName = 0 ENDIF IF $O97PName = "" $O97PName = 0 ENDIF IF $O97PID = "" $O97PID = 0 ENDIF IF $O2KPID = "" $O2KPID = 0 ENDIF
; *** Write log file: Inventory date, logon domain, user id, wksta name, o/s ver & type, Office Suite count, indivdual app count, versions of each app. $OfcSte = "Office $OfcVer $OfcNam" $Log = "$LogDir\@WKSTA_$OfcFil.txt" $Console = OPEN (4, $Log, 5) ; KolumnID behöver ej sparas i varje fil. $Console = WRITELINE (4, "@DATE,@WKSTA,@USERID,$Region,$OSW2K,$OSWNT,$OSWME,$OSW98,$OSW95,$OS,$OfcSte,$O2KPID,$OfcPre,$OfcPro,$OfcBiz,$OfcStd" + ",$OfcNon,$OfcErr,$O97PID,$O97PName,$Ac,$Ex,$ExID,$ExName,$Fp,$Ou,$OuID,$OuName,$Pp,$Pu,$Wo,$WoID,$WoName,$VerAc," + "$LvlAc,$VerEx,$LvlEx,$VerFp,$LvlFp,$VerOu,$LvlOu,$VerPp,$LvlPp,$VerPu,$LvlPu,$VerWo,$LvlWo" + $CR) $Console = CLOSE (4) RETURN
[ 26. September 2003, 17:45: Message edited by: masken ]
_________________________
The tart is out there
|
Top
|
|
|
|
Office 2000 Service packs, etc...
|
Radimus
|
2003-09-16 08:48 PM
|
Re: Office 2000 Service packs, etc...
|
Sealeopard
|
2003-09-17 08:38 PM
|
Re: Office 2000 Service packs, etc...
|
Radimus
|
2003-09-17 09:35 PM
|
Re: Office 2000 Service packs, etc...
|
Sealeopard
|
2003-09-17 11:20 PM
|
Re: Office 2000 Service packs, etc...
|
ShaneEP
|
2003-09-23 05:04 PM
|
Re: Office 2000 Service packs, etc...
|
Radimus
|
2003-09-23 05:39 PM
|
Re: Office 2000 Service packs, etc...
|
Sealeopard
|
2003-09-23 05:48 PM
|
Re: Office 2000 Service packs, etc...
|
ShaneEP
|
2003-09-23 08:38 PM
|
Re: Office 2000 Service packs, etc...
|
Radimus
|
2003-09-23 09:07 PM
|
Re: Office 2000 Service packs, etc...
|
Sealeopard
|
2003-09-23 09:13 PM
|
Re: Office 2000 Service packs, etc...
|
ShaneEP
|
2003-09-23 09:38 PM
|
Re: Office 2000 Service packs, etc...
|
NTDOC
|
2003-09-24 12:03 AM
|
Re: Office 2000 Service packs, etc...
|
ShaneEP
|
2003-09-24 12:52 AM
|
Re: Office 2000 Service packs, etc...
|
NTDOC
|
2003-09-24 02:08 AM
|
Re: Office 2000 Service packs, etc...
|
jpg35
|
2003-09-24 06:50 PM
|
Re: Office 2000 Service packs, etc...
|
masken
|
2003-09-25 09:11 AM
|
Re: Office 2000 Service packs, etc...
|
Radimus
|
2003-09-26 12:16 AM
|
Re: Office 2000 Service packs, etc...
|
masken
|
2003-09-25 02:31 PM
|
Re: Office 2000 Service packs, etc...
|
ShaneEP
|
2003-09-26 12:08 AM
|
Re: Office 2000 Service packs, etc...
|
Les
|
2003-09-26 12:29 AM
|
Re: Office 2000 Service packs, etc...
|
Lonkero
|
2003-09-26 02:04 AM
|
Re: Office 2000 Service packs, etc...
|
NTDOC
|
2003-09-26 06:38 AM
|
Re: Office 2000 Service packs, etc...
|
ShaneEP
|
2003-09-26 03:49 PM
|
Re: Office 2000 Service packs, etc...
|
Sealeopard
|
2003-09-26 04:04 PM
|
Re: Office 2000 Service packs, etc...
|
ShaneEP
|
2003-09-26 05:14 PM
|
Re: Office 2000 Service packs, etc...
|
masken
|
2003-09-26 05:50 PM
|
Re: Office 2000 Service packs, etc...
|
NTDOC
|
2003-09-26 10:10 PM
|
Re: Office 2000 Service packs, etc...
|
ShaneEP
|
2003-09-26 11:03 PM
|
Re: Office 2000 Service packs, etc...
|
ShaneEP
|
2003-09-26 11:09 PM
|
Re: Office 2000 Service packs, etc...
|
Radimus
|
2003-09-27 12:20 AM
|
Re: Office 2000 Service packs, etc...
|
ShaneEP
|
2003-09-29 04:27 PM
|
Re: Office 2000 Service packs, etc...
|
Sealeopard
|
2003-09-29 04:37 PM
|
|
Moderator: Glenn Barnas, NTDOC, Arend_, Jochen, Radimus, Allen, ShaneEP, Ruud van Velsen, Mart
|
0 registered
and 388 anonymous users online.
|
|
|