VIG

I downloaded it and it appears to work "kind of". I could not get any systems or software listed. It did the scan of the computers I selected "or so it said", but then under search for software it had nothing listed or useable.

Is it possible to compile this from log files already generated? This current method using NETVIEW2 will only do NT/2000/XP systems. If you scan or readline a log/text file you can gather this information from ALL Windows systems.

Also, scanning thousands of systems remotely is not very practical "in my opinion". I really like the work you've done so far, but as I said... having the client generate the log files during logon is more practical for a large enterprise. Your current method though is great if you just want to do a "current" snapshot and the user has not logged off to run a logon script in a long time.

Is it possible to set this up maybe doing via both methods? SCAN and read from an existing Log File

Here is the code I use to get the data during logon.

code:
; SoftInventory
Break on
$logsrv="SERVER-X"
$aStart=@ticks
$outfile = "\\"+$logsrv+"\LOGS\Inventory\@wksta.log"
$software = qs(getinstalledsoftware)
If exist($outfile)
del $outfile
endif
$nul = open(1, $outfile,5)
$ = writeline(1,@Wksta+"*"+@FullName+"*"+@USERID+"*"+@IpAddress0+"*"+@PRODUCTTYPE+"*"+@CSD+"*"+@crlf)
For each $item in $software
$ = writeline(1,$item+@crlf)
next
$nul = close(1)
$aStop=@ticks
? "Running Time is: " $aStop-$aStart
Return

function GetInstalledsoftware
Dim $softwarekey, $index
dim $temparray[10]

$SoftwareKey = enumkey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\",$Index)

while not @error
$DisplayName = readvalue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$SoftwareKey","displayname")
$DisplayVersion = readvalue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$SoftwareKey","DisplayVersion")
if $DisplayName
if $count > ubound($temparray)
redim preserve $temparray[ubound($temparray)+10]
endif
$temparray[$count] = $DisplayName +" "+ $DisplayVersion
$count = $count + 1
endif
$Index = $Index + 1
$SoftwareKey = enumkey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\",$Index)
loop
if $count > 0
redim preserve $temparray[$count-1]
else
$temparray = ""
endif
$getinstalledsoftware = $temparray
endfunction

function qs($a)
DIM $ls[32],$us[32],$sp,$L,$U,$m,$p,$i,$j,$t
$ls[0]=0
$us[0]=UBOUND($a)
$sp=0
While $sp >=0
$l=$ls[$sp]
$u=$us[$sp]
While $L < $U
$p=$L+($U-$L)/2
$t=$a[$L]
$A[$L]=$A[$P]
$A[$P]=$t
$i=$L+1
$j=$U
:L1
While ($i<$j) AND $A[$L] > $A[$i]
$i=$i+1
Loop
While ($j>=$i) AND $A[$j] > $A[$L]
$j=$j-1
Loop
IF $i >= $j goto L2 ENDIF
$t=$A[$i]
$A[$i]=$A[$j]
$A[$j]=$t
$j=$j-1
$i=$i+1
Goto L1
:L2
$t=$a[$l]
$a[$l]=$a[$j]
$a[$j]=$t
$m=$j
If $m-$l <= $u - $m
If $m+1 < $u
$ls[$sp]=$m+1
$us[$sp]=$u
$sp=$sp+1
Endif
$u=$m-1
Else
If $m-1 > $l
$ls[$sp]=$l
$us[$sp]=$m-1
$sp=$sp+1
Endif
$l=$m+1
Endif
Loop
$sp=$sp-1
Loop
$qs=$a
Endfunction