Da steht doch
dwRevision [in]
The revision level to assign to the security descriptor. This parameter
must be SECURITY_DESCRIPTOR_REVISION.
oder sehe ich das falsch?
Delphi-Quellcode:
.data
lpSubKey
db "SOFTWARE\Classes\.7z\2",0
phkResult dd 0
.data?
pSecurityDescriptor SECURITY_DESCRIPTOR <>
.code
start:
xor eax,eax
push offset phkResult
push KEY_ALL_ACCESS
push 0
push offset lpSubKey
push HKEY_LOCAL_MACHINE
call RegOpenKeyEx
push offset pSecurityDescriptor
call IsValidSecurityDescriptor
test eax,eax ; EAX 00000000 (Das ist schonmal positiv)
jnz @_ExitProcess
push SECURITY_DESCRIPTOR_REVISION
push offset pSecurityDescriptor
call InitializeSecurityDescriptor
push sizeof SECURITY_DESCRIPTOR
push offset pSecurityDescriptor
push DACL_SECURITY_INFORMATION
push offset phkResult
call RegGetKeySecurity
push phkResult
call RegCloseKey
@_ExitProcess:
push 0
call ExitProcess
end start
Muss jetzt erstmal den SecurityDescriptor richtig erstellen bzw. Speicher zuweisen. Ich denke dort liegt der fehler.
Das mit der Domäne kommt später, muss jetzt erst mal den SecurityDescriptor erstellen. Bevor da nicht alle EAX rückgabewerte der
API überall auf 0 ist geht es nicht weiter.