BUG: RegQueryValueEx() Fails When lpValueName Is NULL

ID: Q189782


The information in this article applies to:
  • Microsoft Win32 Application Programming Interface (API), included with:
    • Microsoft Windows 95
    • Microsoft Windows 98


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:
    Q141460 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
Version : winnt:
Platform : winnt
Issue type : kbbug


Last Reviewed: January 13, 2000
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.