• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 358
  • Last Modified:

How to check a registry's data?

How can I check the content of the registry key I have created?

I have tried using "RegQueryValueKeyEx"
but can seems to work. Registry is not updated..

Any idea why?
0
raymondwee
Asked:
raymondwee
  • 4
  • 3
1 Solution
 
yzCommented:
Please paste the code that you use to access the registry, or how can we know what happen.
0
 
xutaoCommented:
The RegSetValueEx function sets the data and type of a specified value under a registry key.

LONG RegSetValueEx(
  HKEY hKey,           // handle to key
  LPCTSTR lpValueName, // value name
  DWORD Reserved,      // reserved
  DWORD dwType,        // value type
  CONST BYTE *lpData,  // value data
  DWORD cbData         // size of value data
);

The RegQueryValueEx function retrieves the type and data for a specified value name associated with an open registry key.

LONG RegQueryValueEx(
  HKEY hKey,            // handle to key
  LPCTSTR lpValueName,  // value name
  LPDWORD lpReserved,   // reserved
  LPDWORD lpType,       // type buffer
  LPBYTE lpData,        // data buffer
  LPDWORD lpcbData      // size of data buffer
);

And check the return value when you open or create a registry key.Notice: if you use null-terminated string containing the name of the subkey, double slash(\\) is needed.
0
 
raymondweeAuthor Commented:
My test application for registry manipulation is as attached below. Some of those codes are for debugging purposes.


                HKEY hKeyResult = 0;
      HKEY hKey = 0;
      DWORD dwDisposition = 0;
      char initial_value[2] = "0";
      char Reg_value[10] = "";
      DWORD Value = 0;
      DWORD value = 0;
      
      long CreateResult = RegCreateKeyEx(HKEY_CLASSES_ROOT,"Test",0,"",REG_OPTION_VOLATILE,KEY_ALL_ACCESS,NULL,&hKeyResult,&dwDisposition);
       
if(CreateResult != ERROR_SUCCESS)
      exit(0);

      long OpenResult = RegOpenKeyEx(HKEY_CLASSES_ROOT,"Test",0,KEY_QUERY_VALUE,&hKey);

      long SetResult = RegSetValue(hKeyResult,NULL,REG_SZ,"8",1);

      RegQueryValueEx(hKeyResult,"",NULL,NULL,(LPBYTE)Reg_value,&Value);

      if(!strcmp(Reg_value,"8"))
            exit(0);
      value = atol(Reg_value) + 1;

      SetResult = RegSetValue(hKeyResult,NULL,REG_SZ,Reg_value,1);

      if(SetResult != ERROR_SUCCESS)
            exit(0);

      RegCloseKey(hKeyResult);
      RegCloseKey(hKey);
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
yzCommented:
Add Value = sizeof(Reg_value) before RegQueryValueEx.
0
 
yzCommented:
long SetResult = RegSetValue(hKeyResult,NULL,REG_SZ,"8",1);

//////// Add this

Value = sizeof(Reg_value);


RegQueryValueEx(hKeyResult,"",NULL,NULL,(LPBYTE)Reg_value,&Value);

you'd better check the return value of RegQueryValueEx, it can tell why the function failed.
0
 
raymondweeAuthor Commented:
Thanks xutao and yz for your answers.

I can update the registry now.

yz, why does it work if the Value = sizeof(....) is added before the Query...

Pls email me at raymondwee@pmail.ntu.edu.sg.

Thanks again.
0
 
yzCommented:
Paste a part of the description of the RegQueryValueEx from MSDN below.
----------------------------------
lpcbData
[in/out] Pointer to a variable that specifies the size, in bytes, of the buffer pointed to by the lpData parameter. When the function returns, this variable contains the size of the data copied to lpData.
----------------------------------
notice the variable lpcbData is [in/out], it means you should give is a exectly value when call the function, if need, the function will give you back a new value.
0
 
raymondweeAuthor Commented:
ooooic.
thx again
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

  • 4
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now