Issue with RegOpenKeyEx

  • Thread starter Thread starter VJK
  • Start date Start date
V

VJK

This question is related to Windows registry key opening.


Please refer to the following two lines of VC++ code


printf ("queryRegistrySetting:%s - %s - %s\n", subElement,
variableName, variableType);


output: queryRegistrySetting: Software\\xx\\xx\\xx\\xx\\xx - Args -


EXPAND_STRING

long result = RegOpenKeyEx (HKEY_LOCAL_MACHINE, subElement, 0,
KEY_ALL_ACCESS, &key);


output: fails with return value of 87
From winerror.h: #define ERROR_INVALID_PARAMETER 87L //dderror


But,

long result = RegOpenKeyEx (HKEY_LOCAL_MACHINE,
"Software\\xx\\xx\\xx\\xx\\xx"­­, 0, KEY_ALL_ACCESS, &key);


succeeds without any error. As you can see, in the second case, I have
replaced the variable subElement, with actual value.


Once it succeeds with the above change, even if I use the variable
subElement, i.e.


long result = RegOpenKeyEx (HKEY_LOCAL_MACHINE, subElement, 0,
KEY_ALL_ACCESS, &key);


succeeds without any error, till I logout and login or reboot the
system.


Alternate way of executing RegOpenKeyEx without error:
------------------------------­­-----------------------------­-­------------
----------


Instead of replacing subElement with actual value, if I do,


a. Start->Run->regedit
b. this opens the registry editor.
c. without doing any change, I just scrool to the subelement,
Software\\xx\\xx\\xx\\xx\\xx and close the registry editor.


After this,


long result = RegOpenKeyEx (HKEY_LOCAL_MACHINE, subElement, 0,
KEY_ALL_ACCESS, &key); succeeds without any error.


Could someone, explain, if they have faced similar issue and if so, how
this is solved, please ?


Thanks in advance for your help.
 
Hi ,

I am facing the same problem . Did you find any solution to it. If so
could you please post it here.

Thanks
 
Back
Top