BUG: RegQueryValueEx() Fails When lpValueName Is NULL

ID: Q189782

The information in this article applies to:

SYMPTOMS

When you are accessing a remote registry key and you pass NULL as the second parameter to RegQueryValueEx, the function might fail. RegQueryValueEx returns 14:

   Not enough storage is available to complete this operation.

RESOLUTION

Pass the NULL string ("") as the second parameter to RegQueryValueEx().

STATUS

Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. We are researching this bug and will post new information here in the Microsoft Knowledge Base as it becomes available.

MORE INFORMATION

In the VC++ 4.2 Help documentation, the entry for the 2nd parameter passed to RegQueryValueEx reads:

   lpszValueName Points to a null-terminated string specifying the name of
   the subkey of hkey for which a text string is retrieved. If
   lpszValueName is NULL or points to an empty string, RegQueryValueEx
   retrieves the value of hkey.

The VC++ 5.0 documentation does not mention anything about passing NULL or "" as the second parameter to RegQueryValueEx().

Steps to Reproduce the Behavior

1. Install Windows 95 on the client machine. Install Windows NT 4.0 on the

   server.

2. Enable the remote registry services on the client. For additional
   information about how to do this, please see the following article in
   the Microsoft Knowledge Base:

   ARTICLE-ID: Q141460
   TITLE     : How to Install Remote Administration Services

3. Invoke RegConnectRegistry() from the client to obtain a handle to a
   top-level key on the remote server.

4. Open a subkey through a call to RegOpenKeyEx().

5. Attempt to read the default value of this key by passing NULL as the

   second parameter to RegQueryValueEx().

Additional query words:
Keywords          : kbKernBase kbRegistry 
Issue type        : kbbug
Solution Type     : kbnofix

Last Reviewed: July 22, 1998