From: Piotr Caban piotr@codeweavers.com
--- dlls/advapi32/tests/registry.c | 29 ++++------------------------- 1 file changed, 4 insertions(+), 25 deletions(-)
diff --git a/dlls/advapi32/tests/registry.c b/dlls/advapi32/tests/registry.c index 27ee3fbbe30..2430e2330dd 100644 --- a/dlls/advapi32/tests/registry.c +++ b/dlls/advapi32/tests/registry.c @@ -1560,29 +1560,6 @@ static void test_reg_save_key(void) }
static void test_reg_load_key(void) -{ - DWORD ret; - HKEY hkHandle; - - if (!set_privileges(SE_RESTORE_NAME, TRUE) || - !set_privileges(SE_BACKUP_NAME, FALSE)) - { - win_skip("Failed to set SE_RESTORE_NAME privileges, skipping tests\n"); - return; - } - - ret = RegLoadKeyA(HKEY_LOCAL_MACHINE, "Test", "saved_key"); - ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %ld\n", ret); - - set_privileges(SE_RESTORE_NAME, FALSE); - - ret = RegOpenKeyA(HKEY_LOCAL_MACHINE, "Test", &hkHandle); - ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %ld\n", ret); - - RegCloseKey(hkHandle); -} - -static void test_reg_unload_key(void) { UNICODE_STRING key_name; OBJECT_ATTRIBUTES attr; @@ -1597,7 +1574,10 @@ static void test_reg_unload_key(void) return; }
- ret = RegOpenKeyExA(HKEY_LOCAL_MACHINE, "Test", 0, KEY_READ, &key); + ret = RegLoadKeyA(HKEY_LOCAL_MACHINE, "Test", "saved_key"); + ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %ld\n", ret); + + ret = RegOpenKeyA(HKEY_LOCAL_MACHINE, "Test", &key); ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %ld\n", ret);
/* try to unload though the key handle is live */ @@ -4988,7 +4968,6 @@ START_TEST(registry) test_classesroot_mask(); test_reg_save_key(); test_reg_load_key(); - test_reg_unload_key(); test_reg_load_app_key(); test_reg_copy_tree(); test_reg_delete_tree();
From: Piotr Caban piotr@codeweavers.com
--- dlls/advapi32/tests/registry.c | 56 ++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 16 deletions(-)
diff --git a/dlls/advapi32/tests/registry.c b/dlls/advapi32/tests/registry.c index 2430e2330dd..f85c73ed4f2 100644 --- a/dlls/advapi32/tests/registry.c +++ b/dlls/advapi32/tests/registry.c @@ -1542,25 +1542,40 @@ static BOOL set_privileges(LPCSTR privilege, BOOL set) return TRUE; }
-static void test_reg_save_key(void) +static void delete_dir(const char *path) { - DWORD ret; - - if (!set_privileges(SE_BACKUP_NAME, TRUE) || - !set_privileges(SE_RESTORE_NAME, FALSE)) + char file[2 * MAX_PATH], *p; + WIN32_FIND_DATAA fd; + HANDLE hfind; + BOOL r; + + strcpy(file, path); + p = file + strlen(file); + p[0] = '\'; + p[1] = '*'; + p[2] = 0; + hfind = FindFirstFileA(file, &fd); + if (hfind != INVALID_HANDLE_VALUE) { - win_skip("Failed to set SE_BACKUP_NAME privileges, skipping tests\n"); - return; + do + { + if (!strcmp(fd.cFileName, ".") || !strcmp(fd.cFileName, "..")) + continue; + + strcpy(p + 1, fd.cFileName); + r = DeleteFileA(file); + ok(r, "DeleteFile failed on %s: %ld\n", debugstr_a(file), GetLastError()); + } while(FindNextFileA(hfind, &fd)); + FindClose(hfind); }
- ret = RegSaveKeyA(hkey_main, "saved_key", NULL); - ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %ld\n", ret); - - set_privileges(SE_BACKUP_NAME, FALSE); + r = RemoveDirectoryA(path); + ok(r, "RemoveDirectory failed: %ld\n", GetLastError()); }
static void test_reg_load_key(void) { + char saved_key[2 * MAX_PATH], *p; UNICODE_STRING key_name; OBJECT_ATTRIBUTES attr; NTSTATUS status; @@ -1568,13 +1583,21 @@ static void test_reg_load_key(void) HKEY key;
if (!set_privileges(SE_RESTORE_NAME, TRUE) || - !set_privileges(SE_BACKUP_NAME, FALSE)) + !set_privileges(SE_BACKUP_NAME, TRUE)) { win_skip("Failed to set SE_RESTORE_NAME privileges, skipping tests\n"); return; }
- ret = RegLoadKeyA(HKEY_LOCAL_MACHINE, "Test", "saved_key"); + GetTempPathA(MAX_PATH, saved_key); + strcat(saved_key, "\wine_reg_test"); + CreateDirectoryA(saved_key, NULL); + strcat(saved_key, "\saved_key"); + + ret = RegSaveKeyA(hkey_main, saved_key, NULL); + ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %ld\n", ret); + + ret = RegLoadKeyA(HKEY_LOCAL_MACHINE, "Test", saved_key); ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %ld\n", ret);
ret = RegOpenKeyA(HKEY_LOCAL_MACHINE, "Test", &key); @@ -1600,9 +1623,11 @@ static void test_reg_load_key(void) ok(ret == ERROR_ACCESS_DENIED, "expected ERROR_ACCESS_DENIED, got %ld\n", ret);
set_privileges(SE_RESTORE_NAME, FALSE); + set_privileges(SE_BACKUP_NAME, FALSE);
- DeleteFileA("saved_key"); - DeleteFileA("saved_key.LOG"); + p = strrchr(saved_key, '\'); + *p = 0; + delete_dir(saved_key); }
/* Helper function to wait for a file blocked by the registry to be available */ @@ -4966,7 +4991,6 @@ START_TEST(registry) test_classesroot(); test_classesroot_enum(); test_classesroot_mask(); - test_reg_save_key(); test_reg_load_key(); test_reg_load_app_key(); test_reg_copy_tree();
From: Piotr Caban piotr@codeweavers.com
--- dlls/advapi32/tests/registry.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-)
diff --git a/dlls/advapi32/tests/registry.c b/dlls/advapi32/tests/registry.c index f85c73ed4f2..2407eddd813 100644 --- a/dlls/advapi32/tests/registry.c +++ b/dlls/advapi32/tests/registry.c @@ -1575,11 +1575,11 @@ static void delete_dir(const char *path)
static void test_reg_load_key(void) { - char saved_key[2 * MAX_PATH], *p; + char saved_key[2 * MAX_PATH], buf[16], *p; UNICODE_STRING key_name; OBJECT_ATTRIBUTES attr; NTSTATUS status; - DWORD ret; + DWORD ret, size; HKEY key;
if (!set_privileges(SE_RESTORE_NAME, TRUE) || @@ -1603,6 +1603,9 @@ static void test_reg_load_key(void) ret = RegOpenKeyA(HKEY_LOCAL_MACHINE, "Test", &key); ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %ld\n", ret);
+ ret = RegSetValueExA(key, "test", 0, REG_SZ, (BYTE *)"value", 6); + ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %ld\n", ret); + /* try to unload though the key handle is live */ pRtlInitUnicodeString(&key_name, L"\REGISTRY\Machine\Test"); InitializeObjectAttributes(&attr, &key_name, OBJ_CASE_INSENSITIVE, NULL, NULL); @@ -1614,6 +1617,27 @@ static void test_reg_load_key(void) ret = RegUnLoadKeyA(HKEY_LOCAL_MACHINE, "Test"); ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %ld\n", ret);
+ /* check if modifications are saved */ + ret = RegLoadKeyA(HKEY_LOCAL_MACHINE, "Test", saved_key); + ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %ld\n", ret); + + ret = RegOpenKeyA(HKEY_LOCAL_MACHINE, "Test", &key); + ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %ld\n", ret); + + size = sizeof(buf); + ret = RegGetValueA(key, NULL, "test", RRF_RT_REG_SZ, NULL, buf, &size); + todo_wine ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %ld\n", ret); + if (ret == ERROR_SUCCESS) + { + ok(size == 6, "size = %ld\n", size); + ok(!strcmp(buf, "value"), "buf = %s\n", buf); + } + + RegCloseKey(key); + + ret = RegUnLoadKeyA(HKEY_LOCAL_MACHINE, "Test"); + ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %ld\n", ret); + pRtlInitUnicodeString(&key_name, L"\REGISTRY\User\.Default"); InitializeObjectAttributes(&attr, &key_name, OBJ_CASE_INSENSITIVE, NULL, NULL); status = pNtUnloadKey(&attr);
From: Piotr Caban piotr@codeweavers.com
--- dlls/advapi32/tests/registry.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-)
diff --git a/dlls/advapi32/tests/registry.c b/dlls/advapi32/tests/registry.c index 2407eddd813..2afebb3365b 100644 --- a/dlls/advapi32/tests/registry.c +++ b/dlls/advapi32/tests/registry.c @@ -1673,31 +1673,26 @@ static void wait_file_available(char *path) static void test_reg_load_app_key(void) { DWORD ret, size; - char temppath[MAX_PATH], hivefilepath[MAX_PATH]; + char hivefilepath[2 * MAX_PATH], *p; const BYTE test_data[] = "Hello World"; BYTE output[sizeof(test_data)]; HKEY appkey = NULL;
- GetTempPathA(sizeof(temppath), temppath); - GetTempFileNameA(temppath, "key", 0, hivefilepath); - DeleteFileA(hivefilepath); - - if (!set_privileges(SE_BACKUP_NAME, TRUE) || - !set_privileges(SE_RESTORE_NAME, FALSE)) + if (!set_privileges(SE_BACKUP_NAME, TRUE)) { win_skip("Failed to set SE_BACKUP_NAME privileges, skipping tests\n"); return; }
+ GetTempPathA(MAX_PATH, hivefilepath); + strcat(hivefilepath, "\wine_reg_test"); + CreateDirectoryA(hivefilepath, NULL); + strcat(hivefilepath, "\saved_key"); + ret = RegSaveKeyA(hkey_main, hivefilepath, NULL); - if (ret != ERROR_SUCCESS) - { - win_skip("Failed to save test key 0x%lx\n", ret); - return; - } + ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %ld\n", ret);
set_privileges(SE_BACKUP_NAME, FALSE); - set_privileges(SE_RESTORE_NAME, FALSE);
/* Test simple key load */ /* Check if the changes are saved */ @@ -1726,8 +1721,10 @@ static void test_reg_load_app_key(void) RegCloseKey(appkey);
wait_file_available(hivefilepath); - ret = DeleteFileA(hivefilepath); - ok(ret, "couldn't delete hive file %ld\n", GetLastError()); + + p = strrchr(hivefilepath, '\'); + *p = 0; + delete_dir(hivefilepath); }
/* tests that show that RegConnectRegistry and