10
20 ;
30
40
50
60
70
80
90 :
100
110
120 :
130 DEFPROCRegistry_Init
140 reg_hkcr%=&80000000:
150 reg_hkcu%=&80000001:
160 reg_hklm%=&80000002:
170 reg_hku% =&80000003:
180 reg_hkpd%=&80000004:
190 reg_hkcc%=&80000005:
200 reg_hkdd%=&80000006:
210 reg_hkpt%=&80000050:
220 reg_hkpn%=&80000060:
230 :
240 reg_NONE%=0
250 reg_SZ%=1
260 reg_EXPAND_SZ%=2
270 reg_BINARY%=3
280 reg_DWORD%=4
290 reg_DWORD_LITTLE_ENDIAN%=4
300 reg_DWORD_BIG_ENDIAN%=5
310 reg_LINK%=6
320 reg_MULTI_SZ%=7
330 :
340
350
360 ENDPROC
370 :
380 :
390
400
410
420
430
440 :
450 DEFPROCRegistry_WrInt(hk%,Key$,Item$,Value%):LOCAL Type%:Type%=4
460 DEFPROCRegistry_WrBig(hk%,Key$,Item$,Value%):LOCAL Type%:Type%=5
470 DEFPROCRegistry_WrStr(hk%,Key$,Item$,Value$,Type%)
480 DEFPROCRegistry_Wr( hk%,Key$,Item$,Value%,Len%,Type%):ENDPROC
490 LOCAL K%,D%,R%
500 SYS "RegCreateKeyEx",hk%,Key$,0,"",0,&F003F,0,^K%,^D% TO R%
510 IF R%=0 THEN
520 CASE Type% OF
530 WHEN 1,2,3,6,7:SYS "RegSetValueEx",K%,Item$,0,1,Value$,LENValue$+1
540 WHEN 4,5 :SYS "RegSetValueEx",K%,Item$,0,4,Value%,4
550 ENDCASE
560 SYS "RegCloseKey",K%
570 ENDIF
580 ENDPROC
590 :
600 :
610
620
630
640
650 :
660 DEFFNRegistry_RdInt(hk%,Key$,Item$):LOCAL Want%:Want%=4
670 DEFFNRegistry_RdBig(hk%,Key$,Item$):LOCAL Want%:Want%=4
680 DEFFNRegistry_RdStr(hk%,Key$,Item$):LOCAL Want%:Want%=1
690 DEFFNRegistry_Rd( hk%,Key$,Item$):LOCAL Want%:Want%=0
700 LOCAL K%,R%,L%,T%,S$,Buf%
710 SYS "RegOpenKeyEx",hk%,Key$,0,&20001,^K% TO R%
720 IF R%=0 THEN
730 SYS "RegQueryValueEx",K%,Item$,0,^T%,0,^L%:DIM Buf% LOCAL L%
740 SYS "RegQueryValueEx",K%,Item$,0,^T%,Buf%,^L% TO R%
750 SYS "RegCloseKey",K%
760 ENDIF
770 IF Want%=4 :IF R%:=0
780 IF Want%=4 :=!Buf%
790 IF R%:=""
800 IF Want%=1:Buf%?(L%-1)=0:=$$Buf%
810 K%=Buf%:WHILE L%:S$=S$+CHR$?K%:K%=K%+1:L%=L%-1:ENDWHILE
820 =S$
830 :
840 :
850
860
870 :
880 DEFPROCRegistry_Del(hk%,Key$,Item$)
890 IF Item$ ="":SYS "RegDeleteKey",hk%,Key$:ENDPROC
900 SYS "RegOpenKeyEx",hk%,Key$,0,&20001,^K% TO R%
910 IF R%=0:SYS "RegDeleteValue",K%,Item$
920 ENDPROC
930 :
940 :
950
960
970 :
980 DEFFNRegistry_Info(hk%,Key$,Item$)
990 LOCAL K%,R%,L%,T%
1000 SYS "RegOpenKeyEx",hk%,Key$,0,&20001,^K% TO R%
1010 IF R%=0 THEN
1020 SYS "RegQueryValueEx",K%,Item$,0,^T%,0,0 TO R%
1030 SYS "RegCloseKey",K%
1040 IF R%:T%=0
1050 ENDIF
1060 =T%
1070 :
1080 :
1090
1100
1110 :
1120 DEFFNRegistry_List(hk%,Key$,RETURN index%)
1130 DEFFNRegistry_Vals(hk%,Key$,RETURN index%)
1140 LOCAL K%,R%,L%,Buf%:L%=255:DIM Buf% LOCAL L%
1150 SYS "RegOpenKeyEx",hk%,Key$,0,&2003F,^K% TO R%
1160 IF R%=0 THEN
1170 SYS "RegEnumValue",K%,index%,Buf%,^L%,0,0,0,0 TO R%
1180 SYS "RegCloseKey",K%
1190 IFR%=0:index%=index%+1:Buf%?L%=0:=$$Buf%
1200 ENDIF
1210 :=""
1220 :
1230 :
1240
1250
1260 :
1270 DEFFNRegistry_Keys(hk%,Key$,RETURN index%)
1280
1290 LOCAL K%,R%,L%,Buf%:L%=255:DIM Buf% LOCAL L%
1300 SYS "RegOpenKeyEx",hk%,Key$,0,&2003F,^K% TO R%
1310 IF R%=0 THEN
1320
1330 SYS "RegEnumKey",K%,index%,Buf%,^L% TO R%
1340 SYS "RegCloseKey",K%
1350 IFR%=0:index%=index%+1:Buf%?L%=0:=$$Buf%
1360 ENDIF
1370 :=""
1380 :