You are here:  Win32 > Win32 Registry > Registry Operations
Register   |  Login

 

   Minimize

 

   Minimize

   Registry is organized as a hierarchical tree. The Registry keys are folder like entries and the keys can contain string values ( REG_SZ), dword (REG_DWORD) values etc under them. This article discusses, how to Create Registry Keys, String entries, DWORD entries and set their values.

Registry Key Creation using RegCreateKey:

   The Registry keys can be created under any other keys except at the root level. One more point to be noted is applications cannot create entries directly under HKEY_USERS and HKEY_LOCAL_MACHINE. The sample code for creating a registry key is as follows.

       HKEY hKey;
       DWORD dwDisp = 0;
       LPDWORD lpdwDisp = &dwDisp;
       CString l_strExampleKey = "SOFTWARE\\TestKey";

       LONG iSuccess = RegCreateKeyEx( HKEY_CURRENT_USER, l_strExampleKey, 0L,NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey,lpdwDisp);

       if(iSuccess == ERROR_SUCCESS)
       {
            RegCloseKey(hKey);
       }

   The above piece of code will create an entry under HKEY_CURRENT_USER\Software\TestKey.

 

Registry Values - Creating and Modifying values:

   There are two types of values which might need to be modified. One is creating and setting the value for a REG_DWORD entry and the next is creating and setting the value of REG_SZ entry.

Registry Values - REG_DWORD entries using RegSetValueEx:

   This is achieved by using the function RegSetValueEx. This function takes parameters of the Handle to the Registry Key, DWORD Variable name, DWORD value etc., A sample implementation for RegSetValueEx is as follows.

       HKEY hKey;
       DWORD dwDisp = 0;
       LPDWORD lpdwDisp = &dwDisp;
       CString l_strExampleKey = "SOFTWARE\\Microsoft\\Exchange\\MSExchangeAdminCommon";
       CString l_strDWordSample = "DWORDSample";
       DWORD dwVal = 100;

       LONG iSuccess = RegCreateKeyEx( HKEY_CURRENT_USER, l_strExampleKey, 0L,NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey,lpdwDisp);

       if(iSuccess == ERROR_SUCCESS)
       {
            RegSetValueEx (hKey, l_strDWordSample, 0L, REG_DWORD,(CONST BYTE*) &dwVal, sizeof(DWORD));
       }

   Now the REG_DWORD variable "SOFTWARE\\Microsoft\\Exchange\\MSExchangeAdminCommon\\ DWORDSample" will be set with value of 100.

   In the examples of this article, we have created a new key and used it. If the key is already available, we can use RegKeyOpenEx to get the HKEY handle. This handle can be used for RegSetValueEx.

Registry Values - REG_SZ entries using RegSetValueEx:

   The following is the sample code for setting a REG_SZ entry. We use the same key entry for this also.

       HKEY hKey;
       DWORD dwDisp = 0;
       LPDWORD lpdwDisp = &dwDisp;
       CString l_strExampleKey = "SOFTWARE\\Microsoft\\Exchange\\MSExchangeAdminCommon";
       CString l_strStringSample = "StringSample", l_strStringSampleVal = "String Value";;

       LONG iSuccess = RegCreateKeyEx( HKEY_CURRENT_USER, l_strExampleKey, 0L,NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey,lpdwDisp);

       if(iSuccess == ERROR_SUCCESS)
       {
            RegSetValueEx(hKey, l_strStringSample, 0, REG_SZ, (LPBYTE) l_strStringSampleVal.GetBuffer(l_strStringSampleVal.GetLength()), l_strStringSampleVal.GetLength()+ 1);
       }

Registry Key - Important:

   These functions are declared in Winreg.h. Windows.h to be included for accessing these functions. The library to be used is Advapi32.lib.
 

 

 

   Minimize

 

   Minimize