Eryk Sun <eryk...@gmail.com> added the comment:

winreg.DeleteKey[Ex] does not require any particular access on the `key` 
handle. This handle is used only as the native NT API RootDirectory [1] when 
opening `subkey` with DELETE access via NtOpenKeyEx [2].

The extra access with winreg.DeleteKeyEx [3] is just to allow explicitly using 
the 32-bit or 64-bit registry view (i.e. KEY_WOW64_32KEY or KEY_WOW64_64KEY) 
when traversing the registry. I think this should be clarified in the docs. For 
example, if you have the predefined handle HKEY_LOCAL_MACHINE as the `key` 
handle, then deleting r"Software\Spam" will default to traversing the process 
32- or 64-bit view of the "Software" key, but you can override the default 
view. (Note that if you start from a handle for the "Software" key, then 
setting an explicit view in the access mode doesn't matter since "Software" 
isn't traversed to reach "Spam" in this case.) 

winreg.DeleteKeyEx uses KEY_WOW64_64KEY as the default `access` mode. I think 
this is a mistake. It should default to 0, and thus implicitly traverse the 
process view from the path of the `key` handle. A 32-bit process should not 
default to traversing the 64-bit registry view.

---
[1] 
https://docs.microsoft.com/en-us/windows/win32/api/ntdef/ns-ntdef-_object_attributes
[2] 
https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nf-wdm-zwopenkeyex
[3] 
https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regdeletekeyexw

----------
nosy: +eryksun

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue35026>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to