Ge van Geldorp : ole32/tests: Some Windows versions need the class to be registered.

Rob Shearman robertshearman at gmail.com
Thu Jan 29 06:42:20 CST 2009


2009/1/26 Alexandre Julliard <julliard at winehq.org>:
>     hr = StringFromCLSID(&CLSID_WineTest, &pszClsid);
>     ok_ole_success(hr, "StringFromCLSID");
> -    strcpy(buffer, "CLSID\\");
> +    strcpy(buffer, "Software\\Classes\\CLSID\\");
>     WideCharToMultiByte(CP_ACP, 0, pszClsid, -1, buffer + strlen(buffer), sizeof(buffer) - strlen(buffer), NULL, NULL);
>     CoTaskMemFree(pszClsid);
>     strcat(buffer, "\\InprocHandler32");
> -    error = RegCreateKeyEx(HKEY_CLASSES_ROOT, buffer, 0, NULL, 0, KEY_SET_VALUE, NULL, &hkey, &dwDisposition);
> -    ok(error == ERROR_SUCCESS, "RegCreateKeyEx failed with error %d\n", error);
> -    error = RegSetValueEx(hkey, NULL, 0, REG_SZ, (const unsigned char *)"ole32.dll", strlen("ole32.dll") + 1);
> -    ok(error == ERROR_SUCCESS, "RegSetValueEx failed with error %d\n", error);
> -    RegCloseKey(hkey);
> +    if (Register)
> +    {
> +        error = RegCreateKeyEx(HKEY_CURRENT_USER, buffer, 0, NULL, 0, KEY_SET_VALUE, NULL, &hkey, &dwDisposition);
> +        ok(error == ERROR_SUCCESS, "RegCreateKeyEx failed with error %d\n", error);
> +        error = RegSetValueEx(hkey, NULL, 0, REG_SZ, (const unsigned char *)"ole32.dll", strlen("ole32.dll") + 1);
> +        ok(error == ERROR_SUCCESS, "RegSetValueEx failed with error %d\n", error);
> +        RegCloseKey(hkey);
> +    }
> +    else
> +    {
> +        RegDeleteKey(HKEY_CURRENT_USER, buffer);
> +        *strrchr(buffer, '\\') = '\0';
> +        RegDeleteKey(HKEY_CURRENT_USER, buffer);
> +    }
> +}

Ge,

This appears to have caused some regressions in running the tests on
older versions of Windows:
http://test.winehq.org/data/d0e77f8a47016c6f69e3a6b5a8bed8f620f1a8f1/nt4_cw-nt4sp6/ole32:marshal.html
versus before:
http://test.winehq.org/data/f63d950df75bdebbad3278790c6c9d11bfe1b226/nt4_cw-nt4sp6/ole32:marshal.html

While I can see how using HKEY_CURRENT_USER instead of
HKEY_CLASSES_ROOT can help developers using a standard user rather
than Admin on Windows, I don't see it as useful in general as a lot of
the tests emulate what installers do and hence depend on having full
access to the system.

-- 
Rob Shearman



More information about the wine-devel mailing list