regisrylib for use

BlitzPlus Forums/BlitzPlus Programming/regisrylib for use

Kev(Posted 2005) [#1]
hi all

heres a little registry lib to use, i coded this sometime back. hope its usefull

.decls

;
; BlitzPlus registry decls.
;

.lib "advapi32.dll"
apiRegOpenKey%(hKey%,lpSubKey$,ulOptions%,samDesired%,phkResult*):"RegOpenKeyExA"
apiRegCloseKey%(hKey%):"RegCloseKey"
apiRegQueryValue%(hKey%,lpValueName$,lpReserved%,lpType*,lpData*,lpcbData*):"RegQueryValueExA"
apiRegSetValue%(hKey%,lpValueName$,Reserved%,dwType%,lpData*,cbData%):"RegSetValueExA"



and a example


;
;
;


Const HKEY_CLASSES_ROOT = $80000000
Const HKEY_CURRENT_USER = $80000001
Const HKEY_LOCAL_MACHINE = $80000002
Const HKEY_USERS = $80000003

Const KEY_QUERY_VALUE = $1
Const KEY_SET_VALUE = $2
Const KEY_CREATE_SUB_KEY = $4
Const KEY_ENUMERATE_SUB_KEYS = $8
Const KEY_NOTIFY = $10
Const KEY_CREATE_LINK = $20
Const SYNCHRONIZE = $100000

Const KEY_ACCESS_ALL = KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY


;
reg_key = OpenRegKey(HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\")
;key_type = ReadRegSubKeyType(reg_key,"AltDefaultDomainName")
;reg_item$ = ReadRegSubKeyText(reg_key,"AltDefaultDomainName")
;new_changed_key = WriteRegSubKeyText(reg_key,"AltDefaultDomainName",1,"HOMEPC-B0KRMZVQ")

;new_key_created = WriteRegSubKeyText(reg_key,"DefaultDomainName",1,"KEV_BEEN_HERE")

key_exits$ = ReadRegSubKeyText(reg_key,"AltDefaultDomainName")
;Notify key_exits$
Print key_exits$
MouseWait

close_key = CloseRegKey(reg_key)

;Notify reg_key
End


; Opens registry key for read\write operations
;
; 	TypeKEY	 , registry key root.
;	PathKEY$ , the sub key location in the registry.
;
Function OpenRegKey(TypeKEY,PathKEY$)

	pkresult = CreateBank(255)
	ERROR_SUCCESS = apiRegOpenKey(TypeKEY,PathKEY$,0,KEY_ACCESS_ALL,pkresult)
	open_hkey = PeekInt(pkresult,0)
	FreeBank pkresult
	
	If ERROR_SUCCESS = 0 Then
		Return open_hkey
	Else
		Return ERROR_SUCCESS
	EndIf
	
End Function

; Closes open registry key.
;
;	hKey 	 , registry key pointer returned by OpenRegKey()
;
;
Function CloseRegKey(hKEY)
	ERROR_SUCCESS = apiRegCloseKey(hKEY)
	Return ERROR_SUCCESS
End Function

; Returns subitem data type from registry sub key.
;	
;	hKEY	 	, registry key pointer returned by OpenRegKey()
;	ItemNAME$	, sub key itemntype of value to return.
;
Function ReadRegSubKeyType(hKEY,ItemNAME$)

	return_val_type = CreateBank(256)
	return_val_data = CreateBank(255)
	lp_val_data_size = CreateBank(0)

	ERROR_SUCCESS = apiRegQueryValue(hKEY,ItemNAME$,0,return_val_type,return_val_data,lp_val_data_size)
	type_key = PeekInt(return_val_type,0)
	FreeBank return_val_type
	FreeBank return_val_data
	FreeBank lp_val_data_size
	
	If ERROR_SUCCESS = 0 Then
		Return type_key
	Else
		Return ERROR_SUCCESS
	EndIf
	
End Function

; Reads subitem data value from registry key.
;	
;	hKEY	 	, registry key pointer returned by OpenRegKey()
;	ItemNAME$	, sub key item of value to return.
;
Function ReadRegSubKeyText$(hKEY,ItemNAME$)

	return_val_type = CreateBank(256)
	return_val_data = CreateBank(255)
	lp_val_data_size = CreateBank(0)

	ERROR_SUCCESS = apiRegQueryValue(hKEY,ItemNAME$,0,return_val_type,return_val_data,lp_val_data_size)
	
	If ERROR_SUCCESS = 0 Then
		key_dataitem_length = PeekInt(lp_val_data_size,0)
		For loop = 0 To key_dataitem_length
			key_data_value$ = key_data_value$ + Chr(PeekByte(return_val_data,loop))
		Next
	EndIf
	
	FreeBank return_val_type
	FreeBank return_val_data
	FreeBank lp_val_data_size
	
	If ERROR_SUCCESS = 0 Then
		Return key_data_value$
	Else
		Return ERROR_SUCCESS
	EndIf
	
End Function

; Writes subitem data from registry sub key.
;	
;	hKEY	 	, registry key pointer returned by OpenRegKey()
;	ItemNAME$	, sub key item of value to write to.
;	ItemType	, datatype of subitem.
; 	newVALUE$	, new value to be written.
;
Function WriteRegSubKeyText(hKEY,ItemNAME$,ItemType,newVALUE$)

	return_val_data = CreateBank(Len(newVALUE$+1))
	For pokeitem = 1 To Len(newVALUE$)
		PokeByte return_val_data,pokeitem-1,Asc(Mid(newVALUE$,pokeitem,1))
	Next
		
	ERROR_SUCCESS = apiRegSetValue(hKEY,ItemNAME$,0,ItemType,return_val_data,BankSize(return_val_data))
	
	Return ERROR_SUCCESS
	
End Function



kev


Andres(Posted 2009) [#2]
one hell of a usefull code, i've used it on many applications. and because of that source i didn't have to include a separate data files to my exes.

Thanks.


Kev(Posted 2009) [#3]
wow thats an old one 4 years :) anyhow happy someone found it usefull

kev


Andres(Posted 2009) [#4]
:D
google gave me this one