How to enumerate registry keys / SeTakeOwnershipPrivilege
Posted: Tue Feb 06, 2024 8:04 pm
I want to write some sort of monitoring program and that's why I'd like to enumerate all subkeys of a given registry key, e.g. all autostart keys in "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run". Unfortunately my program doesn't work for this subkey (it only works for other keys) and I know it has something to do with ownership ("SeTakeOwnershipPrivilege"). Though I know what the problem is, I don't know how to fix that, I already searched Google for hours, but I didn't find anything I can use or understand.
This is my code:
What exactly do I have to add? Can you help me please?
This is my code:
Code: Select all
EnableExplicit
Declare main()
main()
Procedure main()
Define result.l
Define regKey.l
Define newSubkey$
Define bufferSize.l
Define keyCounter.l
; ist der benutzer ein admin? dann:
result=IsUserAnAdmin_()
If result=0
Debug("error, please restart as admin")
ProcedureReturn
EndIf
result=RegOpenKeyEx_(#HKEY_CURRENT_USER,"SOFTWARE\Microsoft\Windows\CurrentVersion\Run\",0,#KEY_READ,@regKey) ;
If result<>#ERROR_SUCCESS
Debug("error opening key")
Else
keyCounter=0
Repeat
newSubkey$=Space(256)
bufferSize=256
result=RegEnumKeyEx_(regKey,keyCounter,@newSubkey$,@bufferSize,0,0,0,0)
If result<>#ERROR_SUCCESS
Debug("error enum")
Break
Else
Debug(newSubkey$)
keyCounter+1
EndIf
ForEver
RegCloseKey_(regKey)
EndIf
EndProcedure