break on
Classes
Function CLASSES
;Machines CLASSES information.
GLOBAL $base
GLOBAL $output
GLOBAL $#
$base="HKEY_CLASSES_ROOT\"
$output="%USERPROFILE%\DESKTOP\%COMPUTERNAME%_CLASSES.txt"
$apps="%USERPROFILE%\DESKTOP\%COMPUTERNAME%_Apps.txt"
$#=","
IF exist ($output)
DEL $output /f
ENDIF
IF exist ($apps)
DEL $apps /f
ENDIF
DIM $nul
Open(2, $output,5)
If @error = 0
$null = ParseKeys() ; Run Query
Endif
Close (2)
EndFunction
FUNCTION Parsekeys()
DIM $subkey
DIM $retvalue
$retvalue = ENUMKEY($base,$subkey)
WHILE @error=0
IF $retvalue <> "" and left($retvalue,1) = "."
$null = LogKeys($retvalue)
ENDIF
$subkey=$subkey+1
$retvalue = ENUMKEY($base,$subkey)
LOOP
ENDFUNCTION
FUNCTION LogKeys($ext)
DIM $ft, $key, $app, $sh,$x,$y
DIM $CT
$key=$base+$ext
$CT = 0
$ft = Enumkey($key,$CT)
WHILE @error=0
$app= enumkey($key+"\"+$ft,0)
SELECT
CASE $app = "ShellNew"
$x=$base+$ft+"\shell\Open\command"
If keyexist($x) = 1
$SH=enumvalue($x,0)
Endif
Case $ft = "OpenWithProgIDs"
$x= $key+"\"+$ft+"\"+$app
If keyexist($x) = 1
$y=$base+enumvalue($x,0)+"\shell\Open\command"
If keyexist($y)
$SH=enumvalue($y,0)
Endif
Endif
case $ft = "OpenWithList"
$SH=$APP
;case $ft = "shellex"
EndSelect
WriteLine(2,$ext+","+$sh+@CRLF)
$CT=$CT+1
$ft = EnumValue($key,$CT)
Loop
ENDFUNCTION