Work with the correct subkey with loading keys. Not a true fix to the
LoadKey/SaveKey situation.

diff --git a/dlls/advapi32/registry.c b/dlls/advapi32/registry.c
index 3576234..3d3e4d5 100644
--- a/dlls/advapi32/registry.c
+++ b/dlls/advapi32/registry.c
@@ -1452,6 +1452,7 @@
 {
     HANDLE file;
     DWORD ret, len, err = GetLastError();
+    HKEY shkey;
 
     TRACE( "(%p,%s,%s)\n", hkey, debugstr_w(subkey), debugstr_w(filename) );
 
@@ -1469,15 +1470,18 @@
         goto done;
     }
 
+    RegCreateKeyW(hkey,subkey,&shkey);
+
     SERVER_START_REQ( load_registry )
     {
-        req->hkey  = hkey;
+        req->hkey  = shkey;
         req->file  = file;
         wine_server_add_data( req, subkey, len );
         ret = RtlNtStatusToDosError( wine_server_call(req) );
     }
     SERVER_END_REQ;
     CloseHandle( file );
+    RegCloseKey(shkey);
 
  done:
     SetLastError( err );  /* restore the last error code */
@@ -1493,6 +1497,7 @@
     WCHAR buffer[MAX_PATH];
     HANDLE file;
     DWORD ret, len, err = GetLastError();
+    HKEY shkey;
 
     TRACE( "(%p,%s,%s)\n", hkey, debugstr_a(subkey), debugstr_a(filename) );
 
@@ -1510,15 +1515,18 @@
         goto done;
     }
 
+    RegCreateKeyA(hkey,subkey,&shkey);
+
     SERVER_START_REQ( load_registry )
     {
-        req->hkey  = hkey;
+        req->hkey  = shkey;
         req->file  = file;
         wine_server_add_data( req, buffer, len * sizeof(WCHAR) );
         ret = RtlNtStatusToDosError( wine_server_call(req) );
     }
     SERVER_END_REQ;
     CloseHandle( file );
+    RegCloseKey(shkey);
 
  done:
     SetLastError( err );  /* restore the last error code */