--- trunk/reactos/subsys/win32k/ntuser/misc.c 2005-11-27 23:04:51 UTC (rev 19708)
+++ trunk/reactos/subsys/win32k/ntuser/misc.c 2005-11-27 23:15:07 UTC (rev 19709)
@@ -985,12 +985,23 @@
InitializeObjectAttributes(&KeyAttributes, &Key, OBJ_CASE_INSENSITIVE,
CurrentUserKey, NULL);
ZwOpenKey(&KeyHandle, KEY_READ, &KeyAttributes);
- NtClose(CurrentUserKey);
+ ZwClose(CurrentUserKey);
/* read the tile value in the registry */
Status = ZwQueryValueKey(KeyHandle, &Tile, KeyValuePartialInformation,
0, 0, &ResLength);
+ /* fall back to .DEFAULT if we didnt find values */
+ if(Status == STATUS_INVALID_HANDLE)
+ {
+ RtlInitUnicodeString (&KeyPath,L"\\Registry\\User\\.Default\\Control Panel\\Desktop");
+ InitializeObjectAttributes(&KeyAttributes, &KeyPath, OBJ_CASE_INSENSITIVE,
+ NULL, NULL);
+ ZwOpenKey(&KeyHandle, KEY_READ, &KeyAttributes);
+ ZwQueryValueKey(KeyHandle, &Tile, KeyValuePartialInformation,
+ 0, 0, &ResLength);
+ }
+
ResLength += sizeof(KEY_VALUE_PARTIAL_INFORMATION);
KeyValuePartialInfo = ExAllocatePoolWithTag(PagedPool, ResLength, TAG_STRING);
Length = ResLength;
@@ -1005,7 +1016,7 @@
(PVOID)KeyValuePartialInfo, Length, &ResLength);
if(!NT_SUCCESS(Status) || (KeyValuePartialInfo->Type != REG_SZ))
{
- NtClose(KeyHandle);
+ ZwClose(KeyHandle);
ExFreePool(KeyValuePartialInfo);
return 0;
}
@@ -1032,7 +1043,7 @@
if(!KeyValuePartialInfo)
{
- NtClose(KeyHandle);
+ ZwClose(KeyHandle);
return 0;
}
@@ -1040,7 +1051,7 @@
(PVOID)KeyValuePartialInfo, Length, &ResLength);
if(!NT_SUCCESS(Status) || (KeyValuePartialInfo->Type != REG_SZ))
{
- NtClose(KeyHandle);
+ ZwClose(KeyHandle);
ExFreePool(KeyValuePartialInfo);
return 0;
}
@@ -1066,7 +1077,7 @@
WinStaObject->WallpaperMode = wmStretch;
}
- NtClose(KeyHandle);
+ ZwClose(KeyHandle);
break;
}
case SPI_GETDESKWALLPAPER: