Hey adamix; WMI is defiantly the way to go. I use it in my login script to collect information as the user logs in. I use WMI applets to collect information into different files. I create a hardware information file, software file, and network file.
Each file is created in a shared location on the network where the user has read/write permissions, i.e. \\servername\sharename$. Notice I made the share hidden. This way a user will not know it exists and try to delete the files. The files are named to reflect their use, i.e. SW_000D56BE118A.txt. This is a file containing software information. Notice I used the MAC address instead of the computer name in the file naming. This is because the MAC will always be the same, while a computer name can change. The MAC address is only affected if you change out the NIC card or motherboard if the NIC is build-in.
You have to create a Kix program to read the files and put all that information in a single text file.
Finally, I use Microsoft Access to import the various files and I have established a relationship between files using the MAC address.
Simple YES. 
Here is a sample Kix/WMI I use to collect product information, and the program I use to read the information into a text file. NOTE: Sometime I have to use unique delimiters (|) in my text file. This is because sometimes, the information retrieved by WMI will give data that have the standard delimiters (.-,-/-#) in the data string.
Code:
dim $record[3]
$objWMIService = GetObject("winmgmts:\\.\root\cimv2")
$colItems = $objWMIService.ExecQuery("Select * from Win32_ComputerSystemProduct")
For Each $objItem in $colItems
$record[1] = $objItem.IdentifyingNumber ;Computer Serial Number
$record[2] = $objItem.Name ;Computer Model
$record[3] = $objItem.Vendor ;OEM Name
Next
$objWMIService=0
$send = “$record[1],$record[2],$record[3]”
Shell “%comspec% /c echo $send > \\servername\sharename$\WSID_@address.txt”
Code:
del "\\ servername\sharename$\SW_@address.txt"
open(1,"\\servername\sharename$\SW_@address.txt",5)
$objWMIService = GetObject("winmgmts:\\.\root\cimv2")
$SW = $objWMIService.ExecQuery("Select * from Win32_Product")
for each $Item in $SW
$y = "@WkSta|" + $Item.Description + "|" + $Item.Name + "|" + $Item.SKUNumber + "|" +
$Item.Vendor + "|" + $Item.Version + "|" + @DATE + @crlf
$y = "@address|" + $y
writeline(1,"$y")
next
close(1)
$objWMIService=0
A sample file is needed to collect the software information (a small change is needed for the hardware file) information into a text file.
Code:
del "\\ servername\sharename$\sw_info.txt"
open(1," \\ servername\sharename$\sw_info.txt",5)
$file = dir("sw_*")
while $file <> "" and @error = 0
open(2,"$file")
$line = readline(2)
while $line <> "" and @error = 0
if left("$line",13) <> "computer name"
at(7,15) "$count"
writeline(1,"$line" + @crlf)
endif
$line = readline(2)
$count = $count + 1
loop
close(2)
$file = dir()
loop
close(1)