Don't hardcode user to .DEFAULT when reading registry
Modified: trunk/reactos/subsys/win32k/ntuser/misc.c

Modified: trunk/reactos/subsys/win32k/ntuser/misc.c
--- trunk/reactos/subsys/win32k/ntuser/misc.c	2005-11-27 03:08:35 UTC (rev 19668)
+++ trunk/reactos/subsys/win32k/ntuser/misc.c	2005-11-27 04:16:53 UTC (rev 19669)
@@ -928,11 +928,14 @@
                         the current wallpaper bitmap */
                      HBITMAP hOldBitmap, hNewBitmap;
                      ASSERT(pvParam);
-                     UNICODE_STRING Key = RTL_CONSTANT_STRING(L"\\Registry\\User\\.Default\\Control Panel\\Desktop"); 
+                     UNICODE_STRING Key = RTL_CONSTANT_STRING(L"Control Panel\\Desktop"); 
                      UNICODE_STRING Tile = RTL_CONSTANT_STRING(L"TileWallpaper"); 
                      UNICODE_STRING Style = RTL_CONSTANT_STRING(L"WallpaperStyle");
+                     UNICODE_STRING KeyPath;
                      OBJECT_ATTRIBUTES KeyAttributes;
+                     OBJECT_ATTRIBUTES ObjectAttributes;
                      NTSTATUS Status;
+                     HANDLE CurrentUserKey = NULL;
                      HANDLE KeyHandle = NULL;
                      PKEY_VALUE_PARTIAL_INFORMATION KeyValuePartialInfo;
                      ULONG Length = 0;
@@ -970,14 +973,24 @@
                      /*default value is center */
                      WinStaObject->WallpaperMode = wmCenter;
                      
-                     /* find the tile value in the registry */
+                     
+                     
+                     /* Get a handle to the current users settings */
+                     RtlFormatCurrentUserKeyPath(&KeyPath);
+                     InitializeObjectAttributes(&ObjectAttributes,&KeyPath,OBJ_CASE_INSENSITIVE,NULL,NULL);
+                     ZwOpenKey(&CurrentUserKey, KEY_READ, &ObjectAttributes);
+                     RtlFreeUnicodeString(&KeyPath);
+
+                     /* open up the settings to read the values */
                      InitializeObjectAttributes(&KeyAttributes, &Key, OBJ_CASE_INSENSITIVE,
-                              NULL, NULL);
+                              CurrentUserKey, NULL);
                      ZwOpenKey(&KeyHandle, KEY_READ, &KeyAttributes);
-
+                     NtClose(CurrentUserKey);
+                     
+                     /* read the tile value in the registry */
                      Status = ZwQueryValueKey(KeyHandle, &Tile, KeyValuePartialInformation,
                                               0, 0, &ResLength);
-                            
+
                      ResLength += sizeof(KEY_VALUE_PARTIAL_INFORMATION);
                      KeyValuePartialInfo = ExAllocatePoolWithTag(PagedPool, ResLength, TAG_STRING);
                      Length = ResLength;