I Hope My Class For RegAccess to be usefull for somebody!
;--====================================================================--
;--=== Registry Access ==--
;--=== Copyright 2005 by Mincho Georgiev ==--
;--=== shaka_zulu@mail.bg ==-
;--====================================================================--
;--===================================================================--
SaveString PROTO :DWORD,:DWORD,:DWORD,:DWORD
GetString PROTO :DWORD,:DWORD,:DWORD
SaveDword PROTO :DWORD,:DWORD,:DWORD,:DWORD
GetDword PROTO :DWORD,:DWORD
;--===================================================================--
.code
;--====================string values==================================--
SaveString proc lpszKey:DWORD,lpszValue:DWORD,
lpszString:DWORD, dwStrLength:DWORD
LOCAL phkResult :DWORD
LOCAL lpdwDisposition :DWORD
invoke RegCreateKeyEx,HKEY_LOCAL_MACHINE,
lpszKey,NULL,NULL,
REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,
NULL,ADDR phkResult,ADDR lpdwDisposition
.if eax==ERROR_SUCCESS
invoke RegSetValueEx,phkResult,lpszValue,
NULL,REG_SZ,lpszString,dwStrLength
invoke RegCloseKey,phkResult
return TRUE
.endif
xor eax,eax
ret
SaveString endp
GetString proc lpszKey:DWORD,lpszValueName:DWORD,lpszBuffer:DWORD
LOCAL dwStrLength:DWORD
LOCAL phkResult :DWORD
LOCAL RType:DWORD
LOCAL lpcbData :DWORD
mov eax,REG_SZ
mov RType,eax
invoke RegCreateKeyEx,HKEY_LOCAL_MACHINE,
lpszKey,NULL,NULL,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
NULL,ADDR phkResult,ADDR RType
.if eax==ERROR_SUCCESS
mov eax,REG_DWORD
mov RType,eax
invoke RegQueryValueEx,phkResult,lpszValueName,
NULL,ADDR RType, lpszBuffer,
lpcbData
invoke RegCloseKey,phkResult
.endif
ret
GetString endp
;--======================dword values========================================--
SaveDword proc dwKey:DWORD,dwValue:DWORD,
lpDword:DWORD,dwStrLength:DWORD
LOCAL phkResult :DWORD
LOCAL lpdwDisposition :DWORD
invoke RegCreateKeyEx,HKEY_LOCAL_MACHINE,
dwKey,NULL,NULL,
REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,
NULL,ADDR phkResult,ADDR lpdwDisposition
.if eax==ERROR_SUCCESS
invoke RegSetValueEx,phkResult,dwValue,
NULL,REG_DWORD,lpDword,dwStrLength
invoke RegCloseKey,phkResult
return TRUE
.endif
xor eax,eax
ret
SaveDword endp
GetDword proc dwKey:DWORD,dwValueName:DWORD
LOCAL dwSize:DWORD
LOCAL phkResult :DWORD
LOCAL lpdwDisposition :DWORD
LOCAL RType :DWORD
LOCAL lpData:DWORD
invoke RegCreateKeyEx,HKEY_LOCAL_MACHINE,
dwKey,NULL,NULL,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,NULL,
ADDR phkResult,ADDR lpdwDisposition
.if eax==ERROR_SUCCESS
mov eax,REG_DWORD
mov RType,eax
invoke RegQueryValueEx,phkResult,
dwValueName,NULL,ADDR RType,
ADDR lpData,ADDR dwSize
invoke RegCloseKey,phkResult
return lpData
.endif
xor eax,eax
ret
GetDword endp
;--====================================================================--
Mincho, I added the "code" tags in square brackets so your code would display correctly. hutch--
Thank you,Hutch !
Does the code require change to access REG_BINARY data types?
Haven't tested, but it seems good.
Why use KEY_ALL_ACCESS for everything? Why not use KEY_READ for getting and KEY_WRITE for putting.