James Hawkins <truiken(a)gmail.com> writes:
> + /* a key cannot be created directly beneath HKEY_LOCAL_MACHINE or HKEY_USERS */
> + if ((hkey == HKEY_LOCAL_MACHINE || hkey == HKEY_USERS) && !strchr(name, '\\')) {
> + *retkey = NULL;
> + return ERROR_INVALID_PARAMETER;
> + }
> + if (!(ret = RegOpenKeyExW( hkey, name, 0, KEY_ENUMERATE_SUB_KEYS, &tmp )))
> {
> + /* check for any subkeys
> + * a key cannot be deleted if it has any subkeys
> + */
> + RegQueryInfoKeyW(tmp, NULL, NULL, NULL, &numSubKeys, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
> + if (numSubKeys != 0) {
> + if (*name) RegCloseKey(tmp);
> + return ERROR_ACCESS_DENIED;
> + }
These kinds of checks should be done in the lower level functions, not
in advapi32 (and in the case of the delete, are done already AFAICT).
--
Alexandre Julliard
julliard(a)winehq.org