My application properly reads and writes to the registry. Now, I need to read a registry value from:
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography\\Machi
You have built targeting Unicode and so the registry API is returning UTF-16 Unicode text. Instead of char
use wchar_t
and remember that each wchar_t
element is 2 bytes wide.
Do also make sure that you account for the returned string not being null-terminated, as described in the documentation. You must take account of the value returned in dwBufSize
.
I get the guid but in value array after each character their is a "\0" value due to which only first character of array gets assigned to string. This is wierd!
This is because you are calling the Unicode version of RegQueryValueEx()
, so the string is returned in Unicode (UTF-16).
You will have to use wide character parameters to get the value.
Change this line:
char value[256] = "\0";
To use wchar_t
instead.