<div class="content" name="OpenCurrentUser" uuid="ec140ed9-4d00-4c03-a15c-c7245a497ed5"><p>The OpenCurrentUser method is called by the client. In
response, the server opens a handle to the HKEY_CURRENT_USER key. The server
MUST determine which subkey of HKEY_USERS is the correct key to map to
HKEY_CURRENT_USER, as explained in section <a href="2f973088-0980-4110-82df-143625f65fb2" data-linktype="relative-path">3.1.1.8</a>.</p><dl>
<dd>
<div><pre> error_status_t OpenCurrentUser(
   [in, unique] PREGISTRY_SERVER_NAME ServerName,
   [in] REGSAM samDesired,
   [out] PRPC_HKEY phKey
 );
</pre></div>
</dd></dl><p><b>ServerName: </b>SHOULD be sent as NULL, and MUST
be ignored on receipt because the binding to the server is already complete at
this stage.</p><p><b>samDesired: </b>A bit field that describes the
wanted security access for the key. It MUST be constructed from one or more of
the values that are specified in section <a href="fefbc801-b141-4bb1-9dcb-bf366da3ae7e" data-linktype="relative-path">2.2.3</a>.</p><p><b>phKey: </b>A pointer to an RPC context handle for
the root key, HKEY_CURRENT_USER, as specified in section <a href="d93b4170-a865-47bc-a10b-13cb17fbc1b0" data-linktype="relative-path">3.1.1.7</a>. The handle is
found in the handle table (<b>HANDLETABLE</b>).</p><p><b>Return Values: </b>The method returns 0
(ERROR_SUCCESS) to indicate success; otherwise, it returns a nonzero error code
as specified in <a href="../ms-erref/1bc92ddf-b79e-413c-bbaa-99a5281a6c90" data-linktype="relative-path">[MS-ERREF]</a>
section <a href="../ms-erref/18d8fbe8-a967-4f1c-ae50-99ca8e491d2d" data-linktype="relative-path">2.2</a>.
The most common error codes are listed in the following table.</p><dl>
<dd>
<table><thead>
  <tr>
   <th>
   <p>Return value/code</p>
   </th>
   <th>
   <p>Description</p>
   </th>
  </tr>
 </thead><tbody><tr>
  <td>0x00000005 ERROR_ACCESS_DENIED</td>
  <td>Access is denied.</td>
 </tr><tr>
  <td>0x00000013 ERROR_WRITE_PROTECT</td>
  <td>A read or write operation was attempted to a volume after it was dismounted. The server can no longer service registry requests because server shutdown has been initiated (SHUTDOWNINPROGRESS is set to TRUE).</td>
 </tr></tbody></table>
</dd></dl><p>Server Operations</p><p>If the registry server can no longer service registry
requests because server shutdown has been initiated (<b>SHUTDOWNINPROGRESS</b>
is set to TRUE), the server MUST return ERROR_WRITE_PROTECT.</p><p>The server MUST determine which subkey of the HKEY_USERS
predefined key is mapped as the HKEY_CURRENT_USER key, as defined in section
3.1.1.8.</p><p>The server attempts to open the root key, HKEY_CURRENT_USER,
and return a handle to that key in the <i>phKey</i> parameter.</p><p>The server MUST evaluate the security descriptor that is
associated with the key against the requested access that is expressed in the
samDesired parameter to determine whether the caller can open this key.</p><p>If the caller is permitted to open the key, the server MUST
return 0 to indicate success, and create a new valid context handle. The server
MUST store the context handle value in the handle table (HANDLETABLE) along
with a mapping to the HKEY_CURRENT_USER key. The server MUST place the context
handle in the <i>phKey</i> parameter. If the caller does not have access, the
server MUST return ERROR_ACCESS_DENIED.</p><p>The server MUST validate the value of the <i>samDesired</i>
parameter set by the client. If the value of <i>samDesired</i> includes flags
set which are not listed in section 2.2.3, the server MUST return
ERROR_INVALID_PARAMETER. </p></div>