⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reg.asm

📁 用汇编语言编的闹钟程序
💻 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 + -