如何用VFP操作注册表

问题内容:如何用VFP操作注册表
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  Reg
CloseKey  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  =  "" 
lnResult  =  0 
BUFFER  =  SPACE(128) 
BufferSize  =  128 
lnError  =  RegOpenKeyEx(nReg_MainKeyNo,cReg_sKey,  0,  KEY_ALL_ACCESS,  @lnResult) 
IF  lnError  =  0 
lnType  =  0 
lnError  =  RegQueryValueEx(lnResult,  cReg_skeyname,  0,  @lnType,  @BUFFER, @BufferSize) 
IF  lnError  =  0  AND  BUFFER  <>  CHR(0)          &&如果错误码为  0,  则正常读取值. 
ReturnValue  =  LEFT(BUFFER,  BufferSize  -  1)  &&取得返回值 
ENDIF 
slqq
ENDIF 
=RegCloseKey(lnResult) 
RETURN  ReturnValue 
*********************************** 
CASE  nReg_code=3            &&删除注册表项 
skey1=LEFT(cR
eg_sKey,AT('\',cReg_sKey,OCCURS('\',cReg_sKey))-1) 
skey2=SUBST(cReg_sKey,AT('\',cReg_sKey,OCCURS('\',cReg_sKey))+1) 
nError  =RegOpenKeyEx(nReg_MainKeyNo,sKey1,  0,KEY_ALL_ACCESS,  @lnResult) 
IF  nError#0 
MESSAGEBOX('Can`t  delete  the  sub_key!',0+48,'INF') 
RETURN  .F. 
ELSE 
nError=RegDeleteKey(lnResult,sKey2) 
ENDIF 
RETURN  nError 
ENDCASE 
ENDFUNC 

本文发布于:2024-09-23 04:29:08,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/126243.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:子项   注册表   返回   新建
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议