You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
646 lines
33 KiB
C++
646 lines
33 KiB
C++
// XTRegistryManager.h : header file
|
|
//
|
|
// This file is a part of the XTREME CONTROLS MFC class library.
|
|
// (c)1998-2012 Codejock Software, All Rights Reserved.
|
|
//
|
|
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
|
|
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
|
|
// CONSENT OF CODEJOCK SOFTWARE.
|
|
//
|
|
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
|
|
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
|
|
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
|
|
// SINGLE COMPUTER.
|
|
//
|
|
// CONTACT INFORMATION:
|
|
// support@codejock.com
|
|
// http://www.codejock.com
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
#if !defined(__XTPREGISTRYMANAGER_H__)
|
|
#define __XTPREGISTRYMANAGER_H__
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
//===========================================================================
|
|
// Summary:
|
|
// CXTPRegistryManager is a stand alone registry management class. You
|
|
// can use it to read and write values from your system's registry or an
|
|
// .INI file. Use CXTPRegistryManager to read and write string, integer,
|
|
// and binary data to and from the registry. You can also specify an .INI
|
|
// file name, and have these values stored there instead.
|
|
//===========================================================================
|
|
class _XTP_EXT_CLASS CXTPRegistryManager
|
|
{
|
|
private:
|
|
class CHKey;
|
|
|
|
public:
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Constructs a CXTPRegistryManager object
|
|
// Parameters:
|
|
// hKeyBase - Current key to be used in the registry.
|
|
//-----------------------------------------------------------------------
|
|
CXTPRegistryManager(HKEY hKeyBase = HKEY_CURRENT_USER);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Destroys a CXTPRegistryManager object, handles cleanup and deallocation
|
|
//-----------------------------------------------------------------------
|
|
virtual ~CXTPRegistryManager();
|
|
|
|
public:
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function will set a registry key.
|
|
// Parameters:
|
|
// lpszRegistryKey - Used to determine the full registry key for storing application profile settings.
|
|
// lpszProfileName - The application's .INI filename.
|
|
// Remarks:
|
|
// Calling SetRegistryKey will initialize m_pszProfileName and
|
|
// m_pszRegistryKey for CWinApp.
|
|
//-----------------------------------------------------------------------
|
|
void SetRegistryKey(LPCTSTR lpszRegistryKey, LPCTSTR lpszProfileName);
|
|
|
|
protected:
|
|
|
|
HKEY m_hKeyBase; // Handle to the registry key to use. The default is HKEY_CURRENT_USER.
|
|
CString m_strRegistryKey; // Used to determine the full registry key for storing application profile settings.
|
|
CString m_strProfileName; // The application's .INI filename.
|
|
|
|
static CString m_strINIFileName; // Name of an .INI file for registry settings.
|
|
|
|
public:
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function will set the .INI file name for the registry
|
|
// manager to use instead of the system registry.
|
|
// Parameters:
|
|
// strINIFileName - Full path to the .INI file.
|
|
//-----------------------------------------------------------------------
|
|
static void AFX_CDECL SetINIFileName(LPCTSTR strINIFileName);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// This member function will return the file name of the .INI file
|
|
// used by the registry manager.
|
|
// Returns:
|
|
// A reference to the CString object that contains the INI file path.
|
|
//-----------------------------------------------------------------------
|
|
static CString& AFX_CDECL GetINIFileName();
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to write the specified INT value into
|
|
// the specified section of the application's registry or .INI file.
|
|
// Parameters:
|
|
// lpszSection - Points to a null-terminated string that specifies the section
|
|
// containing the entry. If the section does not exist, it is created.
|
|
// The name of the section is case independent. The string may be any
|
|
// combination of uppercase and lowercase letters.
|
|
// lpszEntry - Points to a null-terminated string that contains the entry into
|
|
// which the value is to be written. If the entry does not exist in
|
|
// the specified section, it is created.
|
|
// nValue - Contains the value to be written.
|
|
// Returns:
|
|
// Nonzero if successful, otherwise returns zero. If the user does not have
|
|
// access rights to modify the system registry will return -1.
|
|
//-----------------------------------------------------------------------
|
|
BOOL WriteProfileInt(LPCTSTR lpszSection, LPCTSTR lpszEntry, int nValue);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to write the specified binary value into
|
|
// the specified section of the application's registry or .INI file.
|
|
// Parameters:
|
|
// lpszSection - Points to a null-terminated string that specifies the section
|
|
// containing the entry. If the section does not exist, it is created.
|
|
// The name of the section is case independent. The string may be any
|
|
// combination of uppercase and lowercase letters.
|
|
// lpszEntry - Points to a null-terminated string that contains the entry into
|
|
// which the value is to be written. If the entry does not exist in
|
|
// the specified section, it is created.
|
|
// pData - Contains the value to be written.
|
|
// nBytes - Contains the size of the value to be written.
|
|
// Returns:
|
|
// Nonzero if successful, otherwise returns zero. If the user does not have
|
|
// access rights to modify the system registry will return -1.
|
|
//-----------------------------------------------------------------------
|
|
BOOL WriteProfileBinary(LPCTSTR lpszSection, LPCTSTR lpszEntry, LPBYTE pData, UINT nBytes);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to write the specified string value into
|
|
// the specified section of the application's registry or .INI file.
|
|
// Parameters:
|
|
// lpszSection - Points to a null-terminated string that specifies the section
|
|
// containing the entry. If the section does not exist, it is created.
|
|
// The name of the section is case independent. The string may be any
|
|
// combination of uppercase and lowercase letters.
|
|
// lpszEntry - Points to a null-terminated string that contains the entry into
|
|
// which the value is to be written. If the entry does not exist in
|
|
// the specified section, it is created.
|
|
// lpszValue - Contains the value to be written.
|
|
// Returns:
|
|
// Nonzero if successful, otherwise returns zero. If the user does not have
|
|
// access rights to modify the system registry will return -1.
|
|
//-----------------------------------------------------------------------
|
|
BOOL WriteProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry, LPCTSTR lpszValue);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to write the specified CPoint value into
|
|
// the specified section of the application's registry or .INI file.
|
|
// Parameters:
|
|
// lpszSection - Points to a null-terminated string that specifies the section
|
|
// containing the entry. If the section does not exist, it is created.
|
|
// The name of the section is case independent. The string may be any
|
|
// combination of uppercase and lowercase letters.
|
|
// lpszEntry - Points to a null-terminated string that contains the entry into
|
|
// which the value is to be written. If the entry does not exist in
|
|
// the specified section, it is created.
|
|
// pValue - Contains the value to be written.
|
|
// Returns:
|
|
// Nonzero if successful, otherwise returns zero. If the user does not have
|
|
// access rights to modify the system registry will return -1.
|
|
//-----------------------------------------------------------------------
|
|
BOOL WriteProfilePoint(LPCTSTR lpszSection, LPCTSTR lpszEntry, CPoint* pValue);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to write the specified CRect value into
|
|
// the specified section of the application's registry or .INI file.
|
|
// Parameters:
|
|
// lpszSection - Points to a null-terminated string that specifies the section
|
|
// containing the entry. If the section does not exist, it is created.
|
|
// The name of the section is case independent. The string may be any
|
|
// combination of uppercase and lowercase letters.
|
|
// lpszEntry - Points to a null-terminated string that contains the entry into
|
|
// which the value is to be written. If the entry does not exist in
|
|
// the specified section, it is created.
|
|
// pValue - Contains the value to be written.
|
|
// Returns:
|
|
// Nonzero if successful, otherwise returns zero. If the user does not have
|
|
// access rights to modify the system registry will return -1.
|
|
//-----------------------------------------------------------------------
|
|
BOOL WriteProfileRect(LPCTSTR lpszSection, LPCTSTR lpszEntry, CRect* pValue);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to write the specified CSize value into
|
|
// the specified section of the application's registry or .INI file.
|
|
// Parameters:
|
|
// lpszSection - Points to a null-terminated string that specifies the section
|
|
// containing the entry. If the section does not exist, it is created.
|
|
// The name of the section is case independent. The string may be any
|
|
// combination of uppercase and lowercase letters.
|
|
// lpszEntry - Points to a null-terminated string that contains the entry into
|
|
// which the value is to be written. If the entry does not exist in
|
|
// the specified section, it is created.
|
|
// pValue - Contains the value to be written.
|
|
// Returns:
|
|
// Nonzero if successful, otherwise returns zero. If the user does not have
|
|
// access rights to modify the system registry will return -1.
|
|
//-----------------------------------------------------------------------
|
|
BOOL WriteProfileSize(LPCTSTR lpszSection, LPCTSTR lpszEntry, CSize* pValue);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to write the specified double/float value
|
|
// into the specified section of the application's registry or .INI file.
|
|
// Parameters:
|
|
// lpszSection - Points to a null-terminated string that specifies the section
|
|
// containing the entry. If the section does not exist, it is created.
|
|
// The name of the section is case independent. The string may be any
|
|
// combination of uppercase and lowercase letters.
|
|
// lpszEntry - Points to a null-terminated string that contains the entry into
|
|
// which the value is to be written. If the entry does not exist in
|
|
// the specified section, it is created.
|
|
// pValue - Contains the value to be written.
|
|
// Returns:
|
|
// Nonzero if successful, otherwise returns zero. If the user does not have
|
|
// access rights to modify the system registry will return -1.
|
|
//-----------------------------------------------------------------------
|
|
BOOL WriteProfileDouble(LPCTSTR lpszSection, LPCTSTR lpszEntry, double* pValue);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to write the specified DWORD value into
|
|
// the specified section of the application's registry or .INI file.
|
|
// Parameters:
|
|
// lpszSection - Points to a null-terminated string that specifies the section
|
|
// containing the entry. If the section does not exist, it is created.
|
|
// The name of the section is case independent. The string may be any
|
|
// combination of uppercase and lowercase letters.
|
|
// lpszEntry - Points to a null-terminated string that contains the entry into
|
|
// which the value is to be written. If the entry does not exist in
|
|
// the specified section, it is created.
|
|
// pValue - Contains the value to be written.
|
|
//
|
|
// Note that as COLORREF is a typedef for a DWORD, WriteProfileColor calls
|
|
// this function.
|
|
// Returns:
|
|
// Nonzero if successful, otherwise returns zero. If the user does not have
|
|
// access rights to modify the system registry will return -1.
|
|
//-----------------------------------------------------------------------
|
|
BOOL WriteProfileDword(LPCTSTR lpszSection, LPCTSTR lpszEntry, DWORD* pValue);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to write the specified COLORREF value
|
|
// into the specified section of the application's registry or .INI file.
|
|
// Parameters:
|
|
// lpszSection - Points to a null-terminated string that specifies the section
|
|
// containing the entry. If the section does not exist, it is created.
|
|
// The name of the section is case independent. The string may be any
|
|
// combination of uppercase and lowercase letters.
|
|
// lpszEntry - Points to a null-terminated string that contains the entry into
|
|
// which the value is to be written. If the entry does not exist in
|
|
// the specified section, it is created.
|
|
// pValue - Contains the value to be written.
|
|
//
|
|
// Note that because COLORREF is a typedef for a DWORD, this function only
|
|
// calls WriteProfileDword.
|
|
// Returns:
|
|
// Nonzero if successful, otherwise returns zero. If the user does not have
|
|
// access rights to modify the system registry will return -1.
|
|
//-----------------------------------------------------------------------
|
|
BOOL WriteProfileColor(LPCTSTR lpszSection, LPCTSTR lpszEntry, COLORREF* pValue);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to retrieve the value of an integer from
|
|
// an entry within a specified section of the application's registry or
|
|
// .INI file.
|
|
// Parameters:
|
|
// lpszSection - Points to a null-terminated string that specifies the section
|
|
// containing the entry.
|
|
// lpszEntry - Points to a null-terminated string that contains the entry whose
|
|
// value is to be retrieved.
|
|
// nDefault - Specifies the default value to return if the framework cannot
|
|
// find the entry. This value can be an unsigned value in the range 0
|
|
// through 65, 535 or a signed value in the range -32, 768 through 32, 767.
|
|
//
|
|
// This member function supports hexadecimal notation for the value
|
|
// in the .INI file. When you retrieve a signed integer, you should cast
|
|
// the value into an int.
|
|
// Returns:
|
|
// The integer value of the string that follows the
|
|
// specified entry if the function is successful. The return value is
|
|
// the value of the 'nDefault' parameter if the function does not find the
|
|
// entry. The return value is zero if the value that corresponds to the
|
|
// specified entry is not an integer.
|
|
//-----------------------------------------------------------------------
|
|
UINT GetProfileInt(LPCTSTR lpszSection, LPCTSTR lpszEntry, int nDefault);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to retrieve the binary value from an entry
|
|
// within a specified section of the application's registry or .INI file.
|
|
// Parameters:
|
|
// lpszSection - Points to a null-terminated string that specifies the section
|
|
// containing the entry.
|
|
// lpszEntry - Points to a null-terminated string that contains the entry whose
|
|
// value is to be retrieved.
|
|
// pBytes - Address of a UINT to receive the size of 'ppData'.
|
|
// ppData - Address of a LPBYTE data member to receive the value. It is the
|
|
// caller's responsibility to free the memory allocated for 'ppData'.
|
|
// Example:
|
|
// An example of this would be:
|
|
// <code>
|
|
// void CXTDockWindow::LoadBarSize(CString strSection)
|
|
// {
|
|
// // restore the previous bar style.
|
|
// if (::IsWindow(m_hWnd))
|
|
// {
|
|
// UINT nSize = 0;
|
|
// LPBYTE pbtData = 0;
|
|
// CString string;
|
|
// string.LoadString(XTP_IDS_REG_BARPOS);
|
|
//
|
|
// CXTPRegistryManager regManager;
|
|
// if (regManager.GetProfileBinary(strSection,
|
|
// string, &pbtData, &nSize))
|
|
// {
|
|
// XT_BARPLACEMENT* pBP =
|
|
// reinterpret_cast<XT_BARPLACEMENT*>(pbtData);
|
|
//
|
|
// SetBarPlacement(pBP);
|
|
// delete [] pbtData;
|
|
// }
|
|
// }
|
|
// }</code>
|
|
// Returns:
|
|
// Nonzero if successful, otherwise returns zero.
|
|
//-----------------------------------------------------------------------
|
|
BOOL GetProfileBinary(LPCTSTR lpszSection, LPCTSTR lpszEntry, BYTE** ppData, UINT* pBytes);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to retrieve the string associated with
|
|
// an entry within the specified section in the application's registry
|
|
// or .INI file. The return value is the string from the application's
|
|
// .INI file or 'lpszDefault' if the string cannot be found. The maximum
|
|
// string length supported by the framework is _MAX_PATH. If 'lpszDefault'
|
|
// is NULL, the return value is an empty string.
|
|
// Parameters:
|
|
// lpszSection - Points to a null-terminated string that specifies the section
|
|
// containing the entry.
|
|
// lpszEntry - Points to a null-terminated string that contains the entry whose
|
|
// value is to be retrieved.
|
|
// lpszDefault - Points to the default string value for the given entry if the
|
|
// entry cannot be found in the initialization file.
|
|
// Returns:
|
|
// The string associated with an entry within the specified section in the
|
|
// application's registry or .INI file. The return value is the string from the
|
|
// application's .INI file or 'lpszDefault' if the string cannot be found.
|
|
//-----------------------------------------------------------------------
|
|
CString GetProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry, LPCTSTR lpszDefault);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to retrieve the value of a CPoint from
|
|
// an entry within a specified section of the application's registry or
|
|
// .INI file. Retrieves the CPoint value that follows the specified entry
|
|
// if the function is successful.
|
|
// Parameters:
|
|
// lpszSection - Points to a null-terminated string that specifies the section
|
|
// containing the entry.
|
|
// lpszEntry - Points to a null-terminated string that contains the entry whose
|
|
// value is to be retrieved.
|
|
// ptResult - Points to the variable to be filled from the registry.
|
|
// Returns:
|
|
// TRUE if the function succeeds, otherwise returns FALSE.
|
|
//-----------------------------------------------------------------------
|
|
BOOL GetProfilePoint(LPCTSTR lpszSection, LPCTSTR lpszEntry, CPoint* ptResult);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to retrieve the value of a CRect from
|
|
// an entry within a specified section of the application's registry or
|
|
// .INI file. Retrieves the CRect value that follows the specified entry
|
|
// if the function is successful.
|
|
// Parameters:
|
|
// lpszSection - Points to a null-terminated string that specifies the section
|
|
// containing the entry.
|
|
// lpszEntry - Points to a null-terminated string that contains the entry whose
|
|
// value is to be retrieved.
|
|
// rcResult - Points to the variable to be filled from the registry.
|
|
// Returns:
|
|
// TRUE if the function succeeds, otherwise returns FALSE.
|
|
//-----------------------------------------------------------------------
|
|
BOOL GetProfileRect(LPCTSTR lpszSection, LPCTSTR lpszEntry, CRect* rcResult);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to retrieve the value of a CSize from
|
|
// an entry within a specified section of the application's registry or
|
|
// .INI file. Retrieves the CSize value that follows the specified entry
|
|
// if the function is successful.
|
|
// Parameters:
|
|
// lpszSection - Points to a null-terminated string that specifies the section
|
|
// containing the entry.
|
|
// lpszEntry - Points to a null-terminated string that contains the entry whose
|
|
// value is to be retrieved.
|
|
// rcResult - Points to the variable to be filled from the registry.
|
|
// Returns:
|
|
// TRUE if the function succeeds, otherwise returns FALSE.
|
|
//-----------------------------------------------------------------------
|
|
BOOL GetProfileSize(LPCTSTR lpszSection, LPCTSTR lpszEntry, CSize* rcResult);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to retrieve the value of a double from
|
|
// an entry within a specified section of the application's registry or
|
|
// .INI file. Retrieves the value that follows the specified entry if the
|
|
// function is successful.
|
|
// Parameters:
|
|
// lpszSection - Points to a null-terminated string that specifies the section
|
|
// containing the entry.
|
|
// lpszEntry - Points to a null-terminated string that contains the entry whose
|
|
// value is to be retrieved.
|
|
// rcResult - Points to the variable to be filled from the registry.
|
|
// Returns:
|
|
// TRUE if the function succeeds, otherwise returns FALSE.
|
|
//-----------------------------------------------------------------------
|
|
BOOL GetProfileDouble(LPCTSTR lpszSection, LPCTSTR lpszEntry, double* rcResult);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to retrieve the value of a DWORD from
|
|
// an entry within a specified section of the application's registry or
|
|
// .INI file. Retrieves the value that follows the specified entry if the
|
|
// function is successful.
|
|
// Parameters:
|
|
// lpszSection - Points to a null-terminated string that specifies the section
|
|
// containing the entry.
|
|
// lpszEntry - Points to a null-terminated string that contains the entry whose
|
|
// value is to be retrieved.
|
|
// rcResult - Points to the variable to be filled from the registry.
|
|
//
|
|
// Note that because COLORREF is a typedef for a DWORD, GetProfileColor calls
|
|
// this function.
|
|
// Returns:
|
|
// TRUE if the function succeeds, otherwise returns FALSE.
|
|
//-----------------------------------------------------------------------
|
|
BOOL GetProfileDword(LPCTSTR lpszSection, LPCTSTR lpszEntry, DWORD* rcResult);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to retrieve the value of a COLORREF from
|
|
// an entry within a specified section of the application's registry or
|
|
// .INI file. Retrieves the value that follows the specified entry if the
|
|
// function is successful.
|
|
// Parameters:
|
|
// lpszSection - Points to a null-terminated string that specifies the section
|
|
// containing the entry.
|
|
// lpszEntry - Points to a null-terminated string that contains the entry whose
|
|
// value is to be retrieved.
|
|
// rcResult - Points to the variable to be filled from the registry.
|
|
//
|
|
// Note that because COLORREF is a typedef for a DWORD, this function only
|
|
// calls GetProfileDword.
|
|
// Returns:
|
|
// TRUE if the function succeeds, otherwise returns FALSE.
|
|
//-----------------------------------------------------------------------
|
|
BOOL GetProfileColor(LPCTSTR lpszSection, LPCTSTR lpszEntry, COLORREF* rcResult);
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to fill a CMap (CString to DWORD) with the
|
|
// names and value types under a specific registry section.
|
|
// Parameters:
|
|
// lpszSection - Points to a null\-terminated string that specifies the
|
|
// section containing the entry.
|
|
// mapItems - A reference to a CMap, which will contain the items in the
|
|
// registry under this section. Can be NULL. Does not include
|
|
// subsection names.
|
|
// arrayNames - A reference to a CStringArray which, if not NULL, will
|
|
// contain an array of names in the order they were read from
|
|
// the registry.
|
|
// Remarks:
|
|
// The function also takes a pointer to a CStringArray because CMap
|
|
// is a sorted container; therefore, it is not possible to get the
|
|
// items in the order they appeared from it.
|
|
//
|
|
// Pass NULL for the CStringArray* if you don't want to use it, and
|
|
// NULL into the CMap if you only require a list of the item names.
|
|
//
|
|
// The DWORD values returned are as follows:
|
|
//
|
|
// * <b>REG_BINARY</b> Binary data in any form.
|
|
// * <b>REG_DWORD</b> A 32-bit number.
|
|
// * <b>REG_DWORD_LITTLE_ENDIAN</b> A 32-bit number in
|
|
// little-endian format. This is equivalent to REG_DWORD. In
|
|
// little-endian format, a multi-byte value is stored in memory from
|
|
// the lowest byte (the "little end") to the highest byte. For
|
|
// \example, the value 0x12345678 is stored as (0x78 0x56 0x34 0x12)
|
|
// in little-endian format. Windows NT/Windows 2000, Windows 95, and
|
|
// Windows 98 are designed to run on little-endian computer
|
|
// architectures. A user may connect to computers that have
|
|
// big-endian architectures, such as some UNIX systems.
|
|
// * <b>REG_DWORD_BIG_ENDIAN</b> A 32-bit number in big-endian
|
|
// format. In big-endian format, a multi-byte value is stored in
|
|
// memory from the highest byte (the "big end") to the lowest byte.
|
|
// For example, the value 0x12345678 is stored as (0x12 0x34 0x56
|
|
// 0x78) in big-endian format.
|
|
// * <b>REG_EXPAND_SZ</b> A null-terminated string that contains
|
|
// unexpanded references to environment variables (for example,
|
|
// "\%PATH\%"). It will be a Unicode or ANSI string depending on
|
|
// whether you use the Unicode or ANSI functions. To expand the
|
|
// environment variable references, use the ExpandEnvironmentStrings
|
|
// function.
|
|
// * <b>REG_LINK</b> A Unicode symbolic link. Used internally.
|
|
// Applications should not use this type.
|
|
// * <b>REG_MULTI_SZ</b> An array of null-terminated strings,
|
|
// terminated by two null characters.
|
|
// * <b>REG_NONE</b> No defined value type.
|
|
// * <b>REG_QWORD</b> A 64-bit number.
|
|
// * <b>REG_QWORD_LITTLE_ENDIAN</b> A 64-bit number in
|
|
// little-endian format. This is equivalent to REG_QWORD.
|
|
// * <b>REG_RESOURCE_LIST</b> A device-driver resource list.
|
|
// * <b>REG_SZ</b> A null-terminated string. It will be a Unicode
|
|
// \or ANSI string, depending on whether or not you use the Unicode
|
|
// \or ANSI functions.
|
|
// Returns:
|
|
// Zero if the section is empty; otherwise it returns the number of
|
|
// values present.
|
|
// -----------------------------------------------------------------------------
|
|
int EnumValues(LPCTSTR lpszSection, CMap<CString, LPCTSTR, DWORD, DWORD&>* mapItems, CStringArray* arrayNames);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to fill a CStringArray with the names of keys below
|
|
// the key specified. The return value indicates the number of keys found
|
|
// by the function, which can be used to check if any were found.
|
|
// CStringArray::GetSize will give the same result if needed, assuming
|
|
// the array is zeroed when it goes in. The function does not zero it,
|
|
// leaving the possibility of getting a list of subkeys of more than one
|
|
// key for whatever reason.
|
|
// Parameters:
|
|
// lpszSection - Points to a null-terminated string that specifies the section
|
|
// containing the entry.
|
|
// arrayKeys - A reference to a CStringArray, which will contain the keys in the
|
|
// registry under the above key.
|
|
//-----------------------------------------------------------------------
|
|
int EnumKeys(LPCTSTR lpszSection, CStringArray & arrayKeys);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to delete a registry key and all of its contents.
|
|
// Parameters:
|
|
// lpszSection - Points to a null-terminated string that specifies the section
|
|
// containing the entry.
|
|
// lpszKey - Points to a null-terminated string that specifies the subkey to delete.
|
|
// Returns:
|
|
// true if successful, otherwise returns false.
|
|
//-----------------------------------------------------------------------
|
|
bool DeleteKey(LPCTSTR lpszSection, LPCTSTR lpszKey);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this function to delete a registry value.
|
|
// Parameters:
|
|
// lpszSection - Points to a null-terminated string that specifies the section
|
|
// containing the entry.
|
|
// lpszKey - Points to a null-terminated string that specifies the value to delete.
|
|
// Returns:
|
|
// true if successful, otherwise returns false.
|
|
//-----------------------------------------------------------------------
|
|
bool DeleteValue(LPCTSTR lpszSection, LPCTSTR lpszKey);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to retrieve that last error (if any) that
|
|
// was returned by Windows when accessing the system registry.
|
|
// Returns:
|
|
// If the last operation was successful the return value is ERROR_SUCCESS,
|
|
// otherwise a nonzero error code is returned as defined in Winerror.h. You
|
|
// can call GetErrorMessage() to get a generic description of the error.
|
|
//-----------------------------------------------------------------------
|
|
LONG GetErrorCode() const;
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Call this member function to retrieve the description text for the
|
|
// last error (if any) that occurred while accessing the system registry.
|
|
// Returns:
|
|
// Returns a CString object that contains the error message that describes
|
|
// the last error that occurred while accessing the system registry.
|
|
//-----------------------------------------------------------------------
|
|
CString GetErrorMessage() const;
|
|
|
|
protected:
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Called to get a handle to the CWinApp's registry key.
|
|
// Parameters:
|
|
// samDesired - An access mask that specifies the desired access rights to the key
|
|
// Returns:
|
|
// An HKEY handle to the applications registry key.
|
|
//-----------------------------------------------------------------------
|
|
virtual HKEY GetAppRegistryKey(REGSAM samDesired = KEY_WRITE | KEY_READ);
|
|
|
|
//-----------------------------------------------------------------------
|
|
// Summary:
|
|
// Called to get a handle to the specified section from the applications registry key.
|
|
// Parameters:
|
|
// lpszSection - Section to get the key for.
|
|
// samDesired - An access mask that specifies the desired access rights to the key
|
|
// Returns:
|
|
// An HKEY handle to the specified section from the applications registry key.
|
|
//-----------------------------------------------------------------------
|
|
virtual HKEY GetSectionKey(LPCTSTR lpszSection, REGSAM samDesired = KEY_WRITE | KEY_READ);
|
|
|
|
private:
|
|
BOOL GetProfileInfo();
|
|
LONG RecurseDeleteKey(HKEY hKey, LPCTSTR lpszKey);
|
|
HKEY GetFullPathKey(LPCTSTR lpszSection) const;
|
|
HKEY RecurseOpenKey(LPCTSTR lpszSection, REGSAM samDesired);
|
|
|
|
LONG m_lResult;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
AFX_INLINE void CXTPRegistryManager::SetINIFileName(LPCTSTR strINIFileName) {
|
|
m_strINIFileName = strINIFileName;
|
|
}
|
|
AFX_INLINE CString& CXTPRegistryManager::GetINIFileName() {
|
|
return m_strINIFileName;
|
|
}
|
|
AFX_INLINE LONG CXTPRegistryManager::GetErrorCode() const {
|
|
return m_lResult;
|
|
}
|
|
|
|
#endif // __XTPREGISTRYMANAGER_H__
|