Paging Glenn, Glenn please report to the ER.

I started playing around with the inventory script posted in the script vault and noticed that the application inventory part is not getting all installed apps.

On my system I Installed a trial version of Adobe CS6 and it is not fully detected. Just to be sure it was not something fishy with the trial I also tried it on a system with a licensed version of CS6 and I get the same results. Dreamweaver and Fireworks for example are not detected.

I modified the exclusion section so that all checks to see if an application needs to be excluded fail and all applications will be reported but still no Fireworks and Dreamweaver.

Am I missing something, is Adobe doing some weird things with these applications or is there something wrong with the WMIInstalledProducts UDF in the script?

The code:
 Code:
Break on

$rc = RedirectOutput("D:\TestInventory.txt")

$AppData = WMIInstalledProducts() 

For $index = 0 to UBound($AppData)
	?
	? "Product Name: " + $AppData[$index][0]
	? "Product ID: " + $AppData[$index][1]
	? "Install Date: " + $AppData[$index][2]
	? "Install Path: " + $AppData[$index][3]
	? "Vendor: " + $AppData[$index][4]
	? "Version: " + $AppData[$index][5]
	? "Registered Owner: " + $AppData[$index][6]
	? "Registered Company: " + $AppData[$index][7]
Next

$rc = RedirectOutput("")

?
?"Done"


Sleep 200


;Region Software information
;FUNCTION       WMIInstalledProducts() 
; 
;ACTION         Reports the installed software products 
; 
;AUTHOR         Glenn Barnas 
; 
;VERSION        1.0 / 2014/01/10 
; 
;SYNTAX         WMIInstalledProducts([Host] [,AuthPtr]) 
; 
;PARAMETERS     host    - OPTIONAL - name of system to query 
; 
;               AuthPtr - OPTIONAL - pre-authenticated WMI object pointer 
;                 Use WMIAuthentication() udf to create the AuthPtr value 
;                 AuthPtr is not needed if user has admin rights 
; 
;REMARKS        Filters out secondary components of primary products 
; 
;RETURNS        An array of Arrays. Each inner array consists of the following values: 
;			0. Product Name 
;			1. Product ID 
;			2. Install Date (yyyymmdd) 
;			3. Install Path 
;			4. Vendor 
;			5. Version 
;			6. Registered Owner 
;			7. Registered Company 
; 
;DEPENDENCIES   WMI 
; 
;TESTED WITH    WXP, W2K3, W2K8, W2K12, Win7, Win8 
; 
;EXAMPLES        
; 
Function WMIInstalledProducts(OPTIONAL $_Target, $_pAuth)
	 
	Dim $_objWMIService, $_objItem, $_colItems 		; WMI Object pointer and collection vars 
	Dim $_Ok 						; Process flag 
	Dim $_P 						; Pointer var 
	Dim $_aData, $_aRec[7] 				; array of collected data, working record array 
	 
	$_P = -1
	 
	; insure a properly formatted computer name, default to local computer is not specified 
	$_Target = IIf(Not $_Target, '.', Join(Split($_Target, '\'), ''))
	 
	; If a pre-authenticated WMI object pointer was provided, use it, otherwise create a new object pointer 
	If $_pAuth
		$_objWMIService = $_pAuth
	Else
		$_objWMIService = GetObject('winmgmts:{impersonationLevel=impersonate}!\\' + $_Target + '\root\cimv2')
		If @ERROR Exit Val('&' + Right(DecToHex(@ERROR), 4)) EndIf
	EndIf
	 
	$_objWMIService = GetObject('winmgmts:\\' + $_Target + '\root\cimv2')
	$_colItems = $_objWMIService.ExecQuery('Select * from Win32_Product',, 48)
	 
	For Each $_objItem in $_colItems
		$_Ok = 1
		 
		; =========================================================================== 
		; The following SELECT/CASE block can be adjusted by the code author to  
		; filter out the secondary app components that don't need to be logged. 
		; Those provided here are an example of typical secondary components. 
		; =========================================================================== 
		
		Select
			;Case Not Trim($_objItem.InstallLocation) 		; Can't be blank 
			;	$_Ok = 0
			Case InStr($_objItem.InstallLocation, '1Common Files') ; Must be a unique folder, not common 
				$_Ok = 0
			Case InStr($_objItem.InstallLocation, '1\Users\') 	; exclude personal settings 
				$_Ok = 0
			Case InStr($_objItem.Name, '1MSVCRT') 		; Exclude MS Visual C Runtime 
				$_Ok = 0
			Case InStr($_objItem.Name, '1 Live ') 		; Exclude Live components 
				$_Ok = 0
			Case InStr($_objItem.Name, '1MUI') 			; Exclude language packs 
				$_Ok = 0
			Case InStr($_objItem.Name, '1Engine') 		; Exclude add-on 
				$_Ok = 0
			Case InStr($_objItem.Name, '1Wrapper') 		; Exclude add-on 
				$_Ok = 0
			Case InStr($_objItem.Name, '1Office Proof') Or InStr($_objItem.Name, "1vérification linguistique")		; Exclude office proofing tools (assumed installed if Office is installed) 
				$_Ok = 0
			Case InStr($_objItem.Name, '1IME') 			; Exclude office InputMethodEditor aka IME (assumed installed if Office is installed) 
				$_Ok = 0
		EndSelect
		; =========================================================================== 
		If $_Ok
			$_P = $_P + 1 					; increase the array size 
			ReDim Preserve $_aData[$_P] 			; extend the array 
			ReDim $_aRec[7]
			$_aRec[0] = $_objItem.Name
			$_aRec[1] = $_objItem.ProductID
			$_aRec[2] = $_objItem.InstallDate
			$_aRec[3] = $_objItem.InstallLocation
			$_aRec[4] = $_objItem.Vendor
			$_aRec[5] = $_objItem.Version
			$_aRec[6] = $_objItem.RegCompany
			$_aRec[7] = $_objItem.RegOwner
			$_aData[$_P] = $_aRec 				; store the record in the array 
		EndIf
	Next
	 
	$WMIInstalledProducts = $_aData 			; return the compound array 
	 
	Exit 0
	 
EndFunction
;endregion


Edited by Mart (2014-01-20 02:58 PM)
Edit Reason: Added the code.
_________________________
Mart

- Chuck Norris once sold ebay to ebay on ebay.