advapi32: Add RegCreate/DeleteKey tests and fixes

Alexandre Julliard julliard at winehq.org
Wed Feb 23 06:57:08 CST 2005


James Hawkins <truiken at 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 at winehq.org



More information about the wine-devel mailing list