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