Narrowed it down to here so far, but one annoyiance, I can not retrieve the default values for some of the keys even though the keyexist = 1.
What am I missing ?

 Code:
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