Put your registry into a table


It’s pretty easy to use Foxpro to examine the registry. Here’s some simple recursive code I whipped up to put registry keys into a table.


 


 


#define HKCU BITSET(0,31)+1


CLEAR


LOCAL oreg as “registry” OF HOME()+”samples\classes\registry.prg”


*cPath=”Software\Microsoft\VisualFoxPro\9.0″


cPath=”Software\Microsoft\Windows”


CREATE CURSOR reg (level i,key c(40),name c(40),value c(100))


SET ALTERNATE TO t


SET ALTERNATE on


enumreg(cPath,HKCU,0)


LOCATE


BROWSE LAST


SET ALTERNATE to


MODIFY COMMAND t.txt nowa


 


PROCEDURE enumreg(cPath as String,nhive as Integer,nLevel as Integer)


      LOCAL i,oreg,aVals[1,1],aKeys[1]


      oreg=NEWOBJECT(“registry”,HOME()+”samples\classes\registry.prg”)


      oreg.openkey(cPath,nhive)


      IF oreg.EnumKeyValues(@aVals)=0


            FOR i = 1 TO MIN(ALEN(aVals,1),100)


                  ?REPLICATE(” “,nLevel),nLevel,cPath,aVals[i,1],”=”,aVals[i,2]


                  INSERT INTO reg VALUES (nLevel,REPLICATE(” “,nLevel),aVals[i,1],aVals[i,2])


            ENDFOR


      ENDIF


      IF oreg.EnumKeys(@aKeys)=0


            FOR i = 1 TO ALEN(aKeys,1)


                  ?REPLICATE(” “,nLevel),nLevel,cPath+aKeys[i]


                  INSERT INTO reg VALUES (nLevel,REPLICATE(” “,nLevel)+aKeys[i],””,””)


                  enumreg(cPath+”\”+aKeys[i],nHive,nLevel+1)


            ENDFOR


      ENDIF


      RETURN


 


59031

Comments (3)

  1. Alejandro Sosa says:

    Calvin,

    Haven’t used it yet, but there is gold in this code.

    I suggest you add more comments to VFP code in your blog for those that may be new to VFP. Few of those here I am sure, but who knows.

    Thank you for a great product.

  2. fox weblog says:

    IntroductionIf you haven’t heard of WMI, you might want to skim my previous article on the subject (it’s…