$=SetOption('Explicit','On')
Global $NameArray[], $VenArray[], $VerArray[]
Function GetSoftReg($uninstall)
Dim $i, $key, $x, $y, $ven, $ver
$i = 0
While EnumKey($uninstall,$i) <> "" And @ERROR = 0
$key = EnumKey($uninstall,$i)
$x = ReadValue($uninstall+$key,'DisplayName')
If $x <> ""
$ver = ReadValue($uninstall+$key,'DisplayVersion')
$ven = ReadValue($uninstall+$key,'Publisher')
If $ven = "" $ven = "NA" EndIf
If $ver = "" $ver = "NA" EndIf
$y = UBound($NameArray) + 1
ReDim Preserve $NameArray[$y]
ReDim Preserve $VerArray[$y]
ReDim Preserve $VenArray[$y]
$NameArray[$y] = $x
$VerArray[$y] = $ver
$VenArray[$y] = $ven
;? $NameArray[$y]
EndIf
$i = $i + 1
Loop
EndFunction
;Reg: 'DisplayName','DisplayVersion','Publisher'
;WMI: 'Name','Vendor','Version'
Function GetSoftWMI
Dim $objWMIService, $colItems, $objItem, $itm, $chk, $y, $x, $ven, $ver
$objWMIService = GetObject("winmgmts:\\.\root\cimv2")
$colItems = $objWMIService.ExecQuery("Select * from Win32_Product",,48)
For Each $objItem in $colItems
$chk = "False"
For Each $itm in $NameArray
If $itm = $objItem.Name
$chk = "True"
EndIf
Next
If $chk = "False"
$ver = $objItem.Version
$ven = $objItem.Vendor
If $ven = "" $ven = "NA" EndIf
If $ver = "" $ver = "NA" EndIf
$y = UBound($NameArray) + 1
ReDim Preserve $NameArray[$y]
ReDim Preserve $VerArray[$y]
ReDim Preserve $VenArray[$y]
$NameArray[$y] = $objItem.Name
$VerArray[$y] = $ver
$VenArray[$y] = $ven
EndIf
Next
EndFunction
GetSoftReg("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\")
GetSoftReg("HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\")
GetSoftWMI
$=RedirectOutput("D:\Software.log")
Dim $i
For $i = 0 to UBound($NameArray)
? $NameArray[$i]
Next