From: Santino Mazza smazza@codeweavers.com
--- dlls/ntdll/tests/reg.c | 6 +++--- server/registry.c | 8 ++++++++ 2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/dlls/ntdll/tests/reg.c b/dlls/ntdll/tests/reg.c index 3785ce8740a..8f29e2f0903 100644 --- a/dlls/ntdll/tests/reg.c +++ b/dlls/ntdll/tests/reg.c @@ -2345,7 +2345,7 @@ static void test_NtRegLoadKeyEx(void) InitializeObjectAttributes(&file_attr, &hivefile_pathW, 0, NULL, NULL); key_attr.ObjectName = &key_pathW; status = pNtLoadKeyEx(&key_attr, &file_attr, 0, NULL, NULL, KEY_READ, &key, NULL); - todo_wine ok(status == STATUS_INVALID_PARAMETER_7 || status == STATUS_INVALID_PARAMETER_6 /* win7 */, "got 0x%lx\n", status); + ok(status == STATUS_INVALID_PARAMETER_7 || status == STATUS_INVALID_PARAMETER_6 /* win7 */, "got 0x%lx\n", status); ok(!key, "key is null\n"); if (key) pNtClose(key); RtlFreeUnicodeString(&key_pathW); @@ -2353,8 +2353,8 @@ static void test_NtRegLoadKeyEx(void) /* Test for roothandle parameter with REG_LOAD_APP_KEY */ RtlCreateUnicodeString(&key_pathW, L"\REGISTRY\A\TestKey"); status = pNtLoadKeyEx(&key_attr, &file_attr, REG_LOAD_APP_KEY, NULL, NULL, KEY_READ, &key, NULL); - todo_wine ok(status == STATUS_SUCCESS || broken(status == STATUS_ACCESS_VIOLATION) /* win7 */, "got 0x%lx\n", status); - todo_wine ok(key != NULL || broken(key == NULL) /* win7 */, "key is null\n"); + ok(status == STATUS_SUCCESS || broken(status == STATUS_ACCESS_VIOLATION) /* win7 */, "got 0x%lx\n", status); + ok(key != NULL || broken(key == NULL) /* win7 */, "key is null\n"); if (key) pNtClose(key); RtlFreeUnicodeString(&key_pathW);
diff --git a/server/registry.c b/server/registry.c index 2817db327e0..c413d0062b8 100644 --- a/server/registry.c +++ b/server/registry.c @@ -1853,10 +1853,13 @@ void init_registry(void) 'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\', 'P','e','r','f','l','i','b','\', '0','0','9'}; + static const WCHAR application[] = {'A'}; + static const struct unicode_str root_name = { REGISTRY, sizeof(REGISTRY) }; static const struct unicode_str HKLM_name = { HKLM, sizeof(HKLM) }; static const struct unicode_str HKU_name = { HKU_default, sizeof(HKU_default) }; static const struct unicode_str perflib_name = { perflib, sizeof(perflib) }; + static const struct unicode_str application_name = { application, sizeof(application) };
WCHAR *current_user_path; struct unicode_str current_user_str; @@ -1934,6 +1937,11 @@ void init_registry(void) release_object( key ); }
+ /* create application hive */ + if (!(key = create_key_recursive( root_key, &application_name, current_time ))) + fatal_error( "could not create \REGISTRY\A registry key\n" ); + release_object(key); + release_object( hklm ); release_object( hkcu );