注册 登录
编程论坛 汇编论坛

有关罗云彬注册表编程的问题

w356628 发布于 2008-09-20 18:35, 1306 次点击
lpSubKey db "SOFTWARE\feifei",0
   phkResult  dd ?
   lpValueName db "fei",0
  buf1 db 50 dup(0)
   buf_1 dd 50
   


invoke  RegOpenKeyEx,HKEY_LOCAL_MACHINE,addr lpSubKey,0,KEY_SET_VALUE,addr phkResult  
    invoke  RegQueryValueEx,phkResult,addr lpValueName,0,NULL,addr buf1,addr buf_1

为什么我不会查询注册表值,基本上都是按罗书上写的。?
  高手赐教。。
5 回复
#2
ONEPROBLEM2008-09-24 08:13
LZ,要不把整个程序都贴出来吧?
我们大家一起学习学习~~
#3
zklhp2008-09-27 16:34
这里的注册表操作偶也没看懂多少 就把罗写的那几个函数照搬了一下
#4
zklhp2008-09-27 16:37
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Sample code for < Win32ASM Programming >
; by 罗云彬, http://asm.
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; _Reg.asm
; 几个注册表操作的公用子程序
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;
;
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 查询键值
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_RegQueryValue    proc    _lpszKey,_lpszValueName,_lpszValue,_lpdwSize,_lpdwType
        local    @hKey,@dwReturn

        mov    @dwReturn,-1
        invoke    RegOpenKeyEx,HKEY_LOCAL_MACHINE,_lpszKey,NULL,\
            KEY_QUERY_VALUE,addr @hKey
        .if    eax == ERROR_SUCCESS
            invoke    RegQueryValueEx,@hKey,_lpszValueName,NULL,_lpdwType,\
                _lpszValue,_lpdwSize
            mov    @dwReturn,eax
            invoke    RegCloseKey,@hKey
        .endif
        mov    eax,@dwReturn
        ret

_RegQueryValue    endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 设置键值
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_RegSetValue    proc    _lpszKey,_lpszValueName,_lpszValue,_dwValueType,_dwSize
        local    @hKey

        invoke    RegCreateKey,HKEY_LOCAL_MACHINE,_lpszKey,addr @hKey
        .if    eax == ERROR_SUCCESS
            invoke    RegSetValueEx,@hKey,_lpszValueName,NULL,\
                _dwValueType,_lpszValue,_dwSize
            invoke    RegCloseKey,@hKey
        .endif
        ret

_RegSetValue    endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 创建子键
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_RegCreateKey    proc    _lpszKey,_lpszSubKeyName
        local    @hKey,@hSubkey,@dwDisp

        invoke    RegOpenKeyEx,HKEY_LOCAL_MACHINE,_lpszKey,NULL,\
            KEY_CREATE_SUB_KEY,addr @hKey
        .if    eax == ERROR_SUCCESS
            invoke    RegCreateKeyEx,@hKey,_lpszSubKeyName,NULL,NULL,\
                NULL,NULL,NULL,addr @hSubkey,addr @dwDisp
            invoke    RegCloseKey,@hKey
            invoke    RegCloseKey,@hSubkey
        .endif
        ret

_RegCreateKey    endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 删除键值
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_RegDelValue    proc    _lpszKey,_lpszValueName
        local    @hKey

        invoke    RegOpenKeyEx,HKEY_LOCAL_MACHINE,_lpszKey,NULL,\
            KEY_WRITE,addr @hKey
        .if    eax == ERROR_SUCCESS
            invoke    RegDeleteValue,@hKey,_lpszValueName
            invoke    RegCloseKey,@hKey
        .endif
        ret

_RegDelValue    endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 删除子键
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_RegDelSubKey    proc    _lpszKey,_lpszSubKeyName
        local    @hKey

        invoke    RegOpenKeyEx,HKEY_LOCAL_MACHINE,_lpszKey,NULL,\
            KEY_WRITE,addr @hKey
        .if    eax == ERROR_SUCCESS
            invoke    RegDeleteKey,@hKey,_lpszSubKeyName
            invoke    RegCloseKey,@hKey
        .endif
        ret

_RegDelSubKey    endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#5
zklhp2008-09-27 16:41
[bo][un]zklhp[/un] 在 2008-9-27 16:37 的发言:[/bo]

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Sample code for < Win32ASM Programming >
; by 罗云彬, http://asm.
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ...


这几个还挺常用 引用一下很好

具体用法可以参考他的例子代码
#6
zhsyc2008-10-05 09:12
注册表中没有“SOFTWARE\feifei”这个子键,所以出错,改成“SOFTWARE\Microsoft”或者用Regedit在注册表中添加此子键,便可以正常使用
1