This code will get and set string registry values, and it's very compact. If excess code makes you angry, use this.
.lib "advapi32.dll" RegQueryValueEx%(hKey%,lpValueName$,lpReserved%,lpType*,lpData*,lpcbData*):"RegQueryValueExA" RegSetValueEx%(hKey%,lpValueName$,Reserved%,dwType%,lpData*,cbData%):"RegSetValueExA" RegCreateKey% (hKey%, lpSubKey$, phkResult*) : "RegCreateKeyA" RegDeleteKey% (hKey%, lpSubKey$) : "RegDeleteKeyA"
regkey=OpenRegKey("testregkey") If regkey setregkey regkey,"test","Hello" Notify GetRegKey(regkey,"test") closeregkey result EndIf Function OpenRegKey%(Pathkey$) If Right(pathkey,1)<>"" pathkey=pathkey+"" pkresult=CreateBank(4) If RegCreateKey($80000002,"SOFTWARE"+pathkey$,pkresult)=0 open_hkey=PeekInt(pkresult,0) EndIf FreeBank pkresult Return open_hkey End Function Function CloseRegKey%(hKEY) Return RegCloseKey(hKEY) End Function Function GetRegKey$(hKEY,itemname$,defaultvalue$="") bank_type=CreateBank(4) bank_data=CreateBank(255) bank_size=CreateBank(4) PokeInt bank_size,0,BankSize(bank_data) If RegQueryValueEx(hKEY,ItemNAME$,0,bank_type,bank_data,bank_size)=0 datatype=PeekInt(bank_type,0) If datatype=1 size=PeekInt(bank_size,0) For n=0 To size-2 value$=value+Chr(PeekByte(bank_data,n)) Next Else value=defaultvalue EndIf Else value=defaultvalue EndIf FreeBank bank_type FreeBank bank_data FreeBank bank_size Return value End Function Function SetRegKey%(hKEY,itemname$,value$) size=Len(value)+1 bank_data=CreateBank(size) For n=0 To size-2 PokeByte bank_data,n,Asc(Mid(value,n+1,1)) Next result=RegSetValueEx(hKEY,itemname,0,1,bank_data,size) FreeBank bank_data If result=0 Return True End Function