FUNCTION  registry  
        PARAMETERS    nReg_code,;&&操作代码,0-创建子键,1-写注册表,2-读注册表,3-删除注册表项  
        nReg_MainKeyNo,;           &&注册表主键序号  
        cReg_skey,;                  &&子键  
        cReg_skey_New,;             &&需创建的子键  
        cReg_skeyname,;             &&注册表项  
        cReg_keyvalue,;             &&注册表项的值  
        nReg_ValueType               &&注册表项的值的类型,1-数据串,2-Unicode  串,3-二进制,4-32-位数值  
        ON  ERROR  RETURN  .f.  
        LOCAL  nDisposition,;  
        lnResult,;         &&要取得值的注册表子项的地址  
        nResult,;  
        ReturnValue,;      &&返回的注册表值  
        nKeyLength,;        &&要写的值的长度  
        BUFFER,;             &&返回注册表项值  
        BufferSize,;        &&返回值的长度  
        lnError,;           &&返回注册表函数的错误代码  
        nError,;             &&返回的错误代码  
        skey1,skey2  
 
        IF  !BETWEEN(nReg_MainKeyNo,1,4)  
                 RETURN  .F.  
        ENDIF  
 
        IF  nReg_code=1  AND  !BETWEEN(nReg_ValueType,1,4)  
                 RETURN  .F.  
        ENDIF  
        nReg_MainKeyNo=nReg_MainKeyNo-2147483649  
        *注册表键值访问权限  
        #DEFINE  KEY_ALL_ACCESS                    983103                 &&所有权限  
 
        DECLARE  INTEGER  RegOpenKeyEx  IN  Win32API  ;  
        INTEGER  nKey,;  
        STRING  @cSubKey,  ;  
        INTEGER  nReserved,;  
        INTEGER  nAccessMask,;  
        INTEGER  @nResult  
 
        DECLARE  INTEGER  RegQueryValueEx  IN  Win32API;  
        INTEGER  nKey,  ;  
        STRING  cValueName,  ;  
        INTEGER  nReserved,;  
        INTEGER  @nType,  ;  
        STRING  @cBuffer,  ;  
        INTEGER  @nBufferSize  
 
        DECLARE  RegCreateKeyEx  IN  WIN32API;  
        INTEGER  hKey,;                          &&一个打开项的句柄,或者一个标准项名  
        STRING  lpSubKey,;                    &&欲创建的新子项的名字  
        INTEGER  Reserved,;                  &&设为零  
        STRING  lpClass,;                      &&项的类名  
        INTEGER  dwOptions,;                &&零,这个项不正式保存下来,系统重新启动后会消失  
        INTEGER  samDesired,;                 &&访问权限  
        INTEGER  lpSecurityAttributes,;&&对这个项的安全特性进行描述的一个结构,零  
        INTEGER  @phkResult,;                 &&指定用于装载新子项句柄的一个变量  
        INTEGER  @lpdwDisposition         &&返回是新建子项,还是打开子项(如果新建的子项存在)  
 
        DECLARE  RegDeleteKey  IN  WIN32API;  
        INTEGER  hKey,;  
        STRING  lpSubKey  
 
        DECLARE  INTEGER  RegCloseKey  IN  Win32API  INTEGER  nKey  
 
        DECLARE  INTEGER  RegSetValueEx  IN  Win32API;  
        INTEGER  hKey,;  
        STRING  lpValueName,;  
        INTEGER  Reserved,;  
        INTEGER  dwType,;  
        STRING    lpData,;  
        INTEGER  cbData  
 
        DO  CASE  
                 CASE  nReg_code=0          &&创建子建  
                          nResult=  0  
                          nDisposition  =  0  
                          nError  =  RegOpenKeyEx(nReg_MainKeyNo,cReg_sKey,0,  KEY_ALL_ACCESS,  @nResult)  
                          IF  nError#0  
                                   MESSAGEBOX('Can`t  open  the  sub_key!',0+48,'INF')  
                                   RETURN  .F.  
                          ENDIF  
                          nError=RegCreateKeyEx(nResult,cReg_sKey_New,0,'nReg_ValueType',0,KEY_ALL_ACCESS,0,@lnResult,@nDisposition)  
                          =RegCloseKey(nResult)  
                          RETURN  nError  
                 ***********************************  
                 CASE  nReg_code=1    &&写注册表  
                          nError=0  
                          nError  =RegOpenKeyEx(nReg_MainKeyNo,cReg_sKey,  0,KEY_ALL_ACCESS,  @lnResult)  
                          IF  nError#0  
                                   MESSAGEBOX('Can`t  write  the  sub_key!',0+48,'INF')  
                                   RETURN  .F.  
                          ENDIF  
                          nKeyLength=LEN(cReg_KeyValue)  
                          nError=RegSetValueEx(lnResult,cReg_sKeyName,0,nReg_ValueType,  @cReg_KeyValue,  @nKeyLength)  
                          =RegCloseKey(lnResult)  
                          RETURN  nError=0  
                 ***********************************  
                 CASE  nReg_code=2           &&读注册表  
                          ReturnValue  =  
[1] [2]  下一页