Page 1 of 1

Delete Registry Key

Posted: Thu Apr 25, 2024 9:34 pm
by Maya
Hello Everyone,
May ask about the code line to delete a Registry Key with all its subkeys?
i.e. HKEY_CURRENT_USER\SOFTWARE\DelThisKey
I tried:

Code: Select all

RegDeleteKey_(#HKEY_CURRENT_USER, "SOFTWARE\DelThisKey")

Re: Delete Registry Key

Posted: Thu Apr 25, 2024 9:55 pm
by AZJIO

Re: Delete Registry Key

Posted: Thu Apr 25, 2024 10:00 pm
by Maya
Thanks, but I don't want to use "Registry.pbi" or tons of codeines just to delete a regkey!

Re: Delete Registry Key

Posted: Thu Apr 25, 2024 10:10 pm
by Maya
I found it!
SHDeleteKey_(#HKEY_CURRENT_USER, "SOFTWARE\DelThisKey")

Re: Delete Registry Key

Posted: Fri Apr 26, 2024 1:27 am
by BarryG
Maya wrote: Thu Apr 25, 2024 10:10 pmSHDeleteKey(#HKEY_CURRENT_USER, "SOFTWARE\DelThisKey")
Don't forget the underscore:

Code: Select all

SHDeleteKey_(#HKEY_CURRENT_USER, "SOFTWARE\DelThisKey")

Re: Delete Registry Key

Posted: Fri Apr 26, 2024 2:08 am
by Maya
Amended, thanks.
Any codeine example about "RegCreateKeyEx_"?

Re: Delete Registry Key

Posted: Fri Apr 26, 2024 2:21 am
by AZJIO

Code: Select all

EnableExplicit

If Not IsUserAnAdmin_()
	MessageRequester("Message", "Run as administrator", #MB_SYSTEMMODAL)
	End
EndIf


Procedure RegExistsKey(RootKey, SubKey$)
	Protected hKey
	If #ERROR_SUCCESS = RegOpenKeyEx_(RootKey, SubKey$, 0, #KEY_READ, @hKey)
		RegCloseKey_(hKey)
		ProcedureReturn 1
	Else
		ProcedureReturn 0
	EndIf
EndProcedure

Define NewKey
Define KeyInfo
Define Value$

Value$ = "%windir%\System32\notepad.exe"

If #ERROR_SUCCESS = RegCreateKeyEx_(#HKEY_CLASSES_ROOT, "*\shell\notepadxyz", 0, 0, #REG_OPTION_NON_VOLATILE, #KEY_ALL_ACCESS, 0, @NewKey, @KeyInfo)
	If #ERROR_SUCCESS = RegSetValueEx_(NewKey, "", 0, #REG_SZ, Value$, StringByteLength(Value$, #PB_Unicode) + 2)
		MessageRequester("", "Created", #MB_SYSTEMMODAL)
	EndIf
	RegCloseKey_(NewKey)
EndIf

Debug RegExistsKey(#HKEY_CLASSES_ROOT, "*\shell\notepadxyz")

If #ERROR_SUCCESS = RegDeleteKey_(#HKEY_CLASSES_ROOT, "*\shell\notepadxyz\")
	MessageRequester("", "Deleted", #MB_SYSTEMMODAL)
EndIf

Debug RegExistsKey(#HKEY_CLASSES_ROOT, "*\shell\notepadxyz")