📄 reg.asm
字号:
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Programmed by 罗云彬, bigluo@telekbird.com.cn
; Website: http://asm.yeah.net
; LuoYunBin's Win32 ASM page (罗云彬的编程乐园)
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 公用子程序部分:注册表操作部分
; Tested in : Windows 98/Windows 2000
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;
;
;
;
;
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_SetRegKeyBin proto :dword,:dword,:dword,:dword ;设置注册表二进制键
_GetRegKeyBin proto :dword,:dword,:dword,:dword ;读注册表二进制键
_SetRegKeyDw proto :dword,:dword,:dword ;设置注册表数值键
_GetRegKeyDw proto :dword,:dword ;读注册表数值键
_SetRegKeySz proto :dword,:dword,:dword,:dword ;设置注册表字符键
_GetRegKeySz proto :dword,:dword,:dword,:dword ;读注册表字符键
_DelRegKey proto :dword,:dword ;删除注册表键
_DelRegSubKey proto :dword,:dword ;删除注册表键
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;
;
;
;
;
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 设置二进制型键值
; 参数:键名指针,键值名指针,键值
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_SetRegKeyBin proc lpszKeyName,lpszValueName,lpdbValue,dwSize
local @hKey
invoke RegCreateKey,HKEY_LOCAL_MACHINE,lpszKeyName,addr @hKey
.if eax == ERROR_SUCCESS
invoke RegSetValueEx,@hKey,lpszValueName,NULL,\
REG_BINARY,lpdbValue,dwSize
invoke RegCloseKey,@hKey
.endif
ret
_SetRegKeyBin endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 读取字符型键值
; 参数:键名指针,键值名指针,接收键值字符串指针
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_GetRegKeyBin proc lpszKeyName,lpszValueName,lpdbBuffer,dwSize
local @hKey,@dwType
local @dwReturn
pushad
mov @dwReturn,-1
invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE,lpszKeyName,NULL,\
KEY_QUERY_VALUE,addr @hKey
.if eax == ERROR_SUCCESS
mov @dwType,REG_BINARY
invoke RegQueryValueEx,@hKey,lpszValueName,NULL,addr @dwType,\
lpdbBuffer,addr dwSize
.if eax == ERROR_SUCCESS
mov @dwReturn,eax
.endif
invoke RegCloseKey,@hKey
.endif
popad
mov eax,@dwReturn
ret
_GetRegKeyBin endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 设置数字型键值
; 参数:键名指针,键值名指针,键值
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_SetRegKeyDw proc lpszKeyName,lpszValueName,dwValue
local @hKey
invoke RegCreateKey,HKEY_LOCAL_MACHINE,lpszKeyName,addr @hKey
.if eax == ERROR_SUCCESS
invoke RegSetValueEx,@hKey,lpszValueName,NULL,\
REG_DWORD_LITTLE_ENDIAN,addr dwValue,4
invoke RegCloseKey,@hKey
.endif
ret
_SetRegKeyDw endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 读取数字型键值
; 参数:键名指针,键值名指针
; 返回:键值,失败返回 -1
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_GetRegKeyDw proc lpszKeyName,lpszValueName
local @dwTemp,@hKey,@dwSize,@dwValue
local @dwReturn
pushad
mov @dwReturn,-1
mov @dwSize,4
invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE,lpszKeyName,NULL,\
KEY_QUERY_VALUE,addr @hKey
.if eax == ERROR_SUCCESS
mov eax,REG_DWORD
mov @dwTemp,eax
invoke RegQueryValueEx,@hKey,lpszValueName,NULL,\
addr @dwTemp,addr @dwValue,addr @dwSize
.if eax == ERROR_SUCCESS
push @dwValue
pop @dwReturn
.endif
invoke RegCloseKey,@hKey
.endif
popad
mov eax,@dwReturn
ret
_GetRegKeyDw endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 设置字符型键值
; 参数:键名指针,键值名指针,键值字符串指针,字符串长度
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_SetRegKeySz proc lpszKeyName,lpszValueName,lpszString,dwSize
local @hKey,@dwSize
invoke lstrlen,lpszString
inc eax
mov dwSize,eax
invoke RegCreateKey,HKEY_LOCAL_MACHINE,lpszKeyName,addr @hKey
.if eax == ERROR_SUCCESS
invoke RegSetValueEx,@hKey,lpszValueName,NULL,\
REG_SZ,lpszString,dwSize
invoke RegCloseKey,@hKey
.endif
ret
_SetRegKeySz endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 读取字符型键值
; 参数:键名指针,键值名指针,接收键值字符串指针
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_GetRegKeySz proc lpszKeyName,lpszValueName,lpszBuffer,dwSize
local @hKey
local @dwReturn
pushad
mov @dwReturn,-1
mov eax,lpszBuffer
mov byte ptr [eax],0
invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE,lpszKeyName,NULL,\
KEY_QUERY_VALUE,addr @hKey
.if eax == ERROR_SUCCESS
invoke RegQueryValueEx,@hKey,lpszValueName,NULL,NULL,\
lpszBuffer,addr dwSize
.if eax == ERROR_SUCCESS
mov @dwReturn,eax
.endif
invoke RegCloseKey,@hKey
.endif
popad
mov eax,@dwReturn
ret
_GetRegKeySz endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 删除键值
; 参数:键名指针,键值名指针
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_DelRegKey proc lpszKeyName,lpszValueName
local @hKey
invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE,lpszKeyName,NULL,\
KEY_WRITE,addr @hKey
.if eax == ERROR_SUCCESS
invoke RegDeleteValue,@hKey,lpszValueName
invoke RegCloseKey,@hKey
.endif
ret
_DelRegKey endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 删除键名
; 参数:键名指针,子键名指针
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_DelRegSubKey proc lpszKeyName,lpszSubKeyName
local @hKey
invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE,lpszKeyName,NULL,\
KEY_WRITE,addr @hKey
.if eax == ERROR_SUCCESS
invoke RegDeleteKey,@hKey,lpszSubKeyName
invoke RegCloseKey,@hKey
.endif
ret
_DelRegSubKey endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -