advapi32/tests: More tests for the merged view of HKEY_CLASSES_ROOT.

This commit is contained in:
André Hentschel 2010-12-02 21:59:14 +01:00 committed by Alexandre Julliard
parent 6374205eb4
commit 9c7366c05e

View File

@ -1914,7 +1914,7 @@ static void test_redirection(void)
static void test_classesroot(void)
{
HKEY hkey, hkcr;
HKEY hkey, hklm, hkcr;
DWORD size = 8;
DWORD type = REG_SZ;
static CHAR buffer[8];
@ -1963,8 +1963,91 @@ static void test_classesroot(void)
/* cleanup */
delete_key( hkey );
delete_key( hkcr );
RegCloseKey( hkey );
RegCloseKey( hkcr );
/* create a key in the hklm classes */
if (!RegOpenKeyA( HKEY_LOCAL_MACHINE, "Software\\Classes\\WineTestCls", &hklm ))
{
delete_key( hklm );
RegCloseKey( hklm );
}
res = RegCreateKeyExA( HKEY_LOCAL_MACHINE, "Software\\Classes\\WineTestCls", 0, NULL, REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS, NULL, &hklm, NULL );
if (res == ERROR_ACCESS_DENIED)
{
skip("not enough privileges to add a system class\n");
return;
}
/* try to open that key in hkcr */
res = RegOpenKeyExA( HKEY_CLASSES_ROOT, "WineTestCls", 0,
KEY_QUERY_VALUE|KEY_SET_VALUE, &hkcr );
ok(res == ERROR_SUCCESS,
"test key not found in hkcr: %d\n", res);
if (res)
{
delete_key( hklm );
RegCloseKey( hklm );
return;
}
/* set a value in hklm classes */
res = RegSetValueExA(hklm, "val2", 0, REG_SZ, (const BYTE *)"hklm", sizeof("user"));
ok(res == ERROR_SUCCESS, "RegSetValueExA failed: %d, GLE=%x\n", res, GetLastError());
/* try to find the value in hkcr */
res = RegQueryValueExA(hkcr, "val2", NULL, &type, (LPBYTE)buffer, &size);
ok(res == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", res);
ok(!strcmp( buffer, "hklm" ), "value set to '%s'\n", buffer );
/* modify the value in hkcr */
res = RegSetValueExA(hkcr, "val2", 0, REG_SZ, (const BYTE *)"hkcr", sizeof("hkcr"));
ok(res == ERROR_SUCCESS, "RegSetValueExA failed: %d\n", res);
/* check that the value is not modified in hklm classes */
res = RegQueryValueExA(hklm, "val2", NULL, &type, (LPBYTE)buffer, &size);
ok(res == ERROR_SUCCESS, "RegQueryValueExA failed: %d, GLE=%x\n", res, GetLastError());
ok(!strcmp( buffer, "hklm" ), "value set to '%s'\n", buffer );
if (RegCreateKeyExA( HKEY_CURRENT_USER, "Software\\Classes\\WineTestCls", 0, NULL, 0,
KEY_QUERY_VALUE|KEY_SET_VALUE, NULL, &hkey, NULL )) return;
/* try to open that key in hkcr */
res = RegOpenKeyExA( HKEY_CLASSES_ROOT, "WineTestCls", 0,
KEY_QUERY_VALUE|KEY_SET_VALUE, &hkcr );
ok(res == ERROR_SUCCESS,
"test key not found in hkcr: %d\n", res);
/* set a value in user's classes */
res = RegSetValueExA(hkey, "val2", 0, REG_SZ, (const BYTE *)"user", sizeof("user"));
ok(res == ERROR_SUCCESS, "RegSetValueExA failed: %d, GLE=%x\n", res, GetLastError());
/* try to find the value in hkcr */
res = RegQueryValueExA(hkcr, "val2", NULL, &type, (LPBYTE)buffer, &size);
ok(res == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", res);
ok(!strcmp( buffer, "user" ), "value set to '%s'\n", buffer );
/* modify the value in hklm */
res = RegSetValueExA(hklm, "val2", 0, REG_SZ, (const BYTE *)"hklm", sizeof("user"));
ok(res == ERROR_SUCCESS, "RegSetValueExA failed: %d, GLE=%x\n", res, GetLastError());
/* check that the value is not overwritten in hkcr or user's classes */
res = RegQueryValueExA(hkcr, "val2", NULL, &type, (LPBYTE)buffer, &size);
ok(res == ERROR_SUCCESS, "RegQueryValueExA failed: %d\n", res);
ok(!strcmp( buffer, "user" ), "value set to '%s'\n", buffer );
res = RegQueryValueExA(hkey, "val2", NULL, &type, (LPBYTE)buffer, &size);
ok(res == ERROR_SUCCESS, "RegQueryValueExA failed: %d, GLE=%x\n", res, GetLastError());
ok(!strcmp( buffer, "user" ), "value set to '%s'\n", buffer );
/* cleanup */
delete_key( hkey );
delete_key( hklm );
delete_key( hkcr );
RegCloseKey( hkey );
RegCloseKey( hklm );
RegCloseKey( hkcr );
}
static void test_deleted_key(void)