"Andrew Riedi" <[EMAIL PROTECTED]> writes:

> +{
> +    LPCTSTR lpSubKey;

Please don't use TCHAR types.

> +    static const WCHAR hkcrW[] = {'h','k','c','r',0};
> +    static const WCHAR hkcuW[] = {'h','k','c','u',0};
> +    static const WCHAR hklmW[] = {'h','k','l','m',0};
> +    static const WCHAR hkuW[] = {'h','k','u',0};
> +    static const WCHAR hkpdW[] = {'h','k','p','d',0};
> +    static const WCHAR hkccW[] = {'h','k','c','c',0};
> +    static const WCHAR hkddW[] = {'h','k','d','d',0};
> +
> +    /* Determine key type. */
> +    if (CompareString(LOCALE_NEUTRAL, NORM_IGNORECASE, key_name, 4, hkcrW, 
> 4) == CSTR_EQUAL)
> +        *hKey = HKEY_CLASSES_ROOT;
> +    else if (CompareString(LOCALE_NEUTRAL, NORM_IGNORECASE, key_name, 4, 
> hkcuW, 4) == CSTR_EQUAL)
> +        *hKey = HKEY_CURRENT_USER;
> +    else if (CompareString(LOCALE_NEUTRAL, NORM_IGNORECASE, key_name, 4, 
> hklmW, 4) == CSTR_EQUAL)
> +        *hKey = HKEY_LOCAL_MACHINE;
> +    else if (CompareString(LOCALE_NEUTRAL, NORM_IGNORECASE, key_name, 3, 
> hkuW, 3) == CSTR_EQUAL)
> +        *hKey = HKEY_USERS;
> +    else if (CompareString(LOCALE_NEUTRAL, NORM_IGNORECASE, key_name, 4, 
> hkpdW, 4) == CSTR_EQUAL)
> +        *hKey = HKEY_PERFORMANCE_DATA;
> +    else if (CompareString(LOCALE_NEUTRAL, NORM_IGNORECASE, key_name, 4, 
> hkccW, 4) == CSTR_EQUAL)
> +        *hKey = HKEY_CURRENT_CONFIG;
> +    else if (CompareString(LOCALE_NEUTRAL, NORM_IGNORECASE, key_name, 4, 
> hkddW, 4) == CSTR_EQUAL)
> +        *hKey = HKEY_DYN_DATA;

You should use some sort of array instead of duplicating all that code,
and you need to check the next character of the string too.

-- 
Alexandre Julliard
[EMAIL PROTECTED]


Reply via email to