As was mentioned, the data you are looking for is already present provided you have software inventories running. For completeness, here is the documentation on creating the custom data class and examples you can use to fit the vbscript logic into a script that will send the data back to your custom data class - the first link takes you to the KB for creating the custom data class:
Popular Custom Inventory Samples (8.x)Here is a sample script to get computer name, software, and version:
On Error Resume Next
const HKEY_LOCAL_MACHINE = &H80000002
Dim strComputer, strKeyPath
Dim objReg, strSubkey, arrSubkeys
Dim Name, Version
strComputer = "."
Set wshShell = WScript.CreateObject( "WScript.Shell" )
ComputerName = wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )
'=====================================================================
'Create instance of Altiris NSE component
dim nse
set nse = WScript.CreateObject ("Altiris.AeXNSEvent")
' Set the header data of the NSE
' This GUID for the NS is the same for all versions of 8.x
nse.To = "{1592B913-72F3-4C36-91D2-D4EDA21D2F96}"
nse.Priority = 1
myDataClass = "{PUT CUSTOM DATA CLASS GUID HERE LEAVE BRACKETS AND QUOTES}"
'Create Inventory data block.
dim objDCInstance
set objDCInstance = nse.AddDataClass (myDataClass)
dim objDataClass
set objDataClass = nse.AddDataBlock (objDCInstance)
' Registry key path of Control panel items for installed programs
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubkeys
Dim objDataRow
'Enumerate registry keys.
For Each strSubkey In arrSubkeys
objReg.GetStringValue HKEY_LOCAL_MACHINE, strKeyPath & strSubkey, "DisplayName" , Name
If Name <> "" Then
set objDataRow = objDataClass.AddRow
objReg.GetStringValue HKEY_LOCAL_MACHINE, strKeyPath & strSubkey,"DisplayVersion",Version
objDataRow.SetField 0, ComputerName
objDataRow.SetField 1, Name
objDataRow.SetField 2, Version
End If
Next
'send the NSE file
nse.Send