114 lines
3 KiB
C
114 lines
3 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1997 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
regentry.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Wrapper for registry access Win32 APIs
|
||
|
|
||
|
|
||
|
Usage:
|
||
|
|
||
|
Construct a RegEntry object by specifying the subkey (under
|
||
|
HKEY_CURRENT_USER by default, but can be overridden.)
|
||
|
|
||
|
All member functions are inline so there is minimal overhead.
|
||
|
|
||
|
All member functions (except the destructor) set an internal
|
||
|
error state which can be retrieved with GetError().
|
||
|
Zero indicates no error.
|
||
|
|
||
|
RegEntry works only with strings and DWORDS which are both set
|
||
|
using the overloaded function SetValue()
|
||
|
|
||
|
SetValue("valuename", "string");
|
||
|
SetValue("valuename", 42);
|
||
|
|
||
|
Values are retrieved with GetString() and GetNumber(). GetNumber()
|
||
|
allows you to specificy a default if the valuename doesn't exist.
|
||
|
|
||
|
DeleteValue() removes the valuename and value pair.
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Vlad Sadovsky (vlads) 26-Jan-1997
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
26-Jan-1997 VladS created
|
||
|
|
||
|
--*/
|
||
|
|
||
|
|
||
|
#ifndef REGENTRY_INC
|
||
|
#define REGENTRY_INC
|
||
|
|
||
|
#ifndef STRICT
|
||
|
#define STRICT
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#include <windows.h>
|
||
|
|
||
|
class StiCString;
|
||
|
|
||
|
class RegEntry
|
||
|
{
|
||
|
public:
|
||
|
RegEntry();
|
||
|
RegEntry(const TCHAR *pszSubKey, HKEY hkey = HKEY_CURRENT_USER);
|
||
|
~RegEntry();
|
||
|
BOOL Open(const TCHAR *pszSubKey, HKEY hkey = HKEY_CURRENT_USER);
|
||
|
BOOL Close();
|
||
|
long GetError() { return m_error; }
|
||
|
long SetValue(const TCHAR *pszValue, const TCHAR *string);
|
||
|
long SetValue(const TCHAR *pszValue, const TCHAR *string, DWORD dwType);
|
||
|
long SetValue(const TCHAR *pszValue, unsigned long dwNumber);
|
||
|
long SetValue(const TCHAR *pszValue, BYTE * pValue,unsigned long dwNumber);
|
||
|
TCHAR* GetString(const TCHAR *pszValue, TCHAR *string, unsigned long length);
|
||
|
VOID GetValue(const TCHAR *pszValueName, BUFFER *pValue);
|
||
|
long GetNumber(const TCHAR *pszValue, long dwDefault = 0);
|
||
|
long DeleteValue(const TCHAR *pszValue);
|
||
|
long FlushKey();
|
||
|
VOID MoveToSubKey(const TCHAR *pszSubKeyName);
|
||
|
BOOL EnumSubKey(DWORD index, StiCString *pStrString);
|
||
|
BOOL GetSubKeyInfo(DWORD *NumberOfSubKeys, DWORD *pMaxSubKeyLength);
|
||
|
HKEY GetKey() { return m_hkey; };
|
||
|
BOOL IsValid() { return bhkeyValid;};
|
||
|
|
||
|
private:
|
||
|
HKEY m_hkey;
|
||
|
long m_error;
|
||
|
BOOL bhkeyValid;
|
||
|
};
|
||
|
|
||
|
class RegEnumValues
|
||
|
{
|
||
|
public:
|
||
|
RegEnumValues(RegEntry *pRegEntry);
|
||
|
~RegEnumValues();
|
||
|
long Next();
|
||
|
TCHAR * GetName() {return pchName;}
|
||
|
DWORD GetType() {return dwType;}
|
||
|
LPBYTE GetData() {return pbValue;}
|
||
|
DWORD GetDataLength() {return dwDataLength;}
|
||
|
|
||
|
private:
|
||
|
RegEntry * pRegEntry;
|
||
|
DWORD iEnum;
|
||
|
DWORD cEntries;
|
||
|
TCHAR * pchName;
|
||
|
LPBYTE pbValue;
|
||
|
DWORD dwType;
|
||
|
DWORD dwDataLength;
|
||
|
DWORD cMaxValueName;
|
||
|
DWORD cMaxData;
|
||
|
LONG m_error;
|
||
|
};
|
||
|
|
||
|
#endif
|