CSettingsStore 类

包装 Windows API 函数,提供用于访问注册表的面向对象的接口。

语法

class CSettingsStore : public CObject

成员

公共构造函数

名称 描述
CSettingsStore::CSettingsStore 构造 CSettingsStore 对象。

公共方法

名称 描述
CSettingsStore::Close 关闭已打开的注册表项。
CSettingsStore::CreateKey 打开指定的项,如果该项不存在,则创建它。
CSettingsStore::DeleteKey 删除指定的项及其所有子项。
CSettingsStore::DeleteValue 删除已打开项的指定值。
CSettingsStore::Open 打开指定的项。
CSettingsStore::Read 检索指定的项值的数据。
CSettingsStore::Write 将值写入注册表中已打开的项下。

备注

成员函数 CreateKeyOpen 非常相似。 如果注册表项已存在,则 CreateKeyOpen 以相同的方式运行。 但是,如果注册表项不存在,则 CreateKey 将创建该项,而 Open 会返回错误值。

示例

以下示例演示如何使用 CSettingsStore 类的 Open 和 Read 方法。 此代码片段是工具提示演示示例的一部分。

CSettingsStore reg(FALSE, TRUE);
DWORD dwEnableBalloonTips = 1;

if (reg.Open(_T("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced")) &&
    reg.Read(_T("EnableBalloonTips"), dwEnableBalloonTips))
{
   return dwEnableBalloonTips == 1;
}

继承层次结构

CObject

CSettingsStore

要求

标头:afxsettingsstore.h

CSettingsStore::Close

关闭已打开的注册表项。

virtual void Close();

备注

默认情况下,从 CSettingsStore 类的析构函数调用此方法。

CSettingsStore::CreateKey

打开注册表项,如果该项不存在,则创建它。

virtual BOOL CreateKey(LPCTSTR pszPath);

参数

pszPath
[in] 指定要创建或打开的项的名称。

返回值

如果成功,则返回 0;否则返回非零值。

注解

CreateKey 使用 m_hKey 作为注册表查询的根。 它会搜索用作 m_hKey 子项的 pszPath。 如果该项不存在,则 CreateKey 会创建它。 否则它会打开该项。 然后 CreateKeym_hKey 设置为创建或打开的项。

CSettingsStore::CSettingsStore

创建一个 CSettngsStore 对象。

CSettingsStore(
    BOOL bAdmin,
    BOOL bReadOnly);

参数

bAdmin
[in] 布尔参数,指定 CSettingsStore 对象是否在管理员模式下运行。

bReadOnly
[in] 布尔参数,指定 CSettingsStore 对象是否是在只读模式下创建的。

备注

如果 bAdmin 设置为 TRUE,则 m_hKey 成员变量将设置为 HKEY_LOCAL_MACHINE。 如果将 bAdmin 设置为 FALSE,则 m_hKey 将设置为 HKEY_CURRENT_USER

安全访问权限取决于 bReadOnly 参数。 如果 bReadonly 为 FALSE,则安全访问权限将设置为 KEY_ALL_ACCESS。 如果 bReadyOnly 为 TRUE,则安全访问权限将设置为 KEY_QUERY_VALUE、KEY_NOTIFY 和 KEY_ENUMERATE_SUB_KEYS 的组合。 有关安全访问权限以及注册表的详细信息,请参阅注册表项安全性和访问权限

CSettingsStore 的析构函数自动释放 m_hKey

CSettingsStore::DeleteKey

从注册表中删除一个项及其所有子项。

virtual BOOL DeleteKey(
    LPCTSTR pszPath,
    BOOL bAdmin = FALSE);

参数

pszPath
[in] 要删除的项的名称。

bAdmin
[in] 用于指定要删除的项的位置的开关。

返回值

如果成功,则不为 0;否则为 0。

注解

如果 CSettingsStore 对象处于只读模式,此方法会失败。

如果参数 bAdmin 为零,则 DeleteKey 会在 HKEY_CURRENT_USER 下搜索要删除的项。 如果 bAdmin 不为零,则 DeleteKey 会在 HKEY_LOCAL_MACHINE 下搜索要删除的项

CSettingsStore::DeleteValue

m_hKey 中删除一个值。

virtual BOOL DeleteValue(LPCTSTR pszValue);

参数

pszValue
[in] 指定要删除的值字段。

返回值

如果成功,则不为 0;否则为 0。

CSettingsStore::Open

打开注册表项。

virtual BOOL Open(LPCTSTR pszPath);

参数

pszPath
[in] 注册表项的名称。

返回值

如果成功,则不为 0;否则为 0。

注解

此方法成功打开指定的项后,会将 m_hKey 设置为此项的句柄。

CSettingsStore::Read

从注册表中的项读取值。

virtual BOOL Read(
    LPCTSTR pszKey,
    int& iVal);

virtual BOOL Read(
    LPCTSTR pszKey,
    DWORD& dwVal);

virtual BOOL Read(
    LPCTSTR pszKey,
    CString& sVal);

virtual BOOL Read(
    LPCTSTR pszKey,
    CStringList& scStringList);

virtual BOOL Read(
    LPCTSTR pszKey,
    CStringArray& scArray);

virtual BOOL Read(
    LPCTSTR pszKey,
    CDWordArray& dwcArray);

virtual BOOL Read(
    LPCTSTR pszKey,
    CWordArray& wcArray);

virtual BOOL Read(
    LPCTSTR pszKey,
    CByteArray& bcArray);

virtual BOOL Read(
    LPCTSTR pszKey,
    LPPOINT& lpPoint);

virtual BOOL Read(
    LPCTSTR pszKey,
    CRect& rect);

virtual BOOL Read(
    LPCTSTR pszKey,
    BYTE** ppData,
    UINT* pBytes);

virtual BOOL Read(
    LPCTSTR pszKey,
    CObList& list);

virtual BOOL Read(
    LPCTSTR pszKey,
    CObject& obj);

virtual BOOL Read(
    LPCTSTR pszKey,
    CObject*& pObj);

参数

pszKey
[in] 指向以 null 结尾的字符串的指针,该字符串包含要从注册表读取的值的名称。

iVal
[out] 对接收从注册表项读取的值的整数变量的引用。

dwVal
[out] 对接收从注册表项读取的值的 32 位双字变量的引用。

sVal
[out] 对接收从注册表项读取的值的字符串变量的引用。

scStringList
[out] 对接收从注册表项读取的值的字符串列表变量的引用。

scArray
[out] 对接收从注册表项读取的值的字符串数组变量的引用。

dwcArray
[out] 对接收从注册表项读取的值的 32 位双字数组变量的引用。

wcArray
[out] 对接收从注册表项读取的值的 16 位字数组变量的引用。

bcArray
[out] 对接收从注册表项读取的值的字节数组变量的引用。

lpPoint
[out] 对指向 POINT 结构的指针的引用,该结构接收从注册表项读取的值。

rect
[out] 对接收从注册表项读取的值的 CRect 变量的引用。

ppData
[out] 指向指针的指针,被指向的指针指向接收从注册表项读取的值的数据。

pBytes
[out] 指向无符号整数变量的指针。 此变量接收 ppData 指向的缓冲区的大小

list
[out] 对接收从注册表项读取的值的 CObList 变量的引用。

obj
[out] 对接收从注册表项读取的值的 CObject 变量的引用。

pObj
[out] 对指针的引用,该指针指向接收从注册表项读取的值的 CObject 变量。

返回值

如果成功,则不为 0;否则为 0。

备注

Read 检查用作 m_hKey 子项的 pszKey

CSettingsStore::Write

将值写入注册表中已打开的项下。

virtual BOOL Write(
    LPCTSTR pszKey,
    int iVal);

virtual BOOL Write(
    LPCTSTR pszKey,
    DWORD dwVal);

virtual BOOL Write(
    LPCTSTR pszKey,
    LPCTSTR pszVal);

virtual BOOL Write(
    LPCTSTR pszKey,
    CStringList& scStringList);

virtual BOOL Write(
    LPCTSTR pszKey,
    CByteArray& bcArray);

virtual BOOL Write(
    LPCTSTR pszKey,
    CStringArray& scArray);

virtual BOOL Write(
    LPCTSTR pszKey,
    CDWordArray& dwcArray);

virtual BOOL Write(
    LPCTSTR pszKey,
    CWordArray& wcArray);

virtual BOOL Write(
    LPCTSTR pszKey,
    const CRect& rect);

virtual BOOL Write(
    LPCTSTR pszKey,
    LPPOINT& lpPoint);

virtual BOOL Write(
    LPCTSTR pszKey,
    LPBYTE pData,
    UINT nBytes);

virtual BOOL Write(
    LPCTSTR pszKey,
    CObList& list);

virtual BOOL Write(
    LPCTSTR pszKey,
    CObject& obj);

virtual BOOL Write(
    LPCTSTR pszKey,
    CObject* pObj);

参数

pszKey
[in] 指向字符串的指针,该字符串包含要设置的值的名称。

iVal
[in] 对整数变量的引用,该变量包含要存储的数据。

dwVal
[in] 对 32 位双字变量的引用,该变量包含要存储的数据。

pszVal
[in] 指向以 null 结尾的字符串变量的指针,该变量包含要存储的数据。

scStringList
[in] 对 CStringList 变量的引用,该变量包含要存储的数据。

bcArray
[in] 对字节数组变量的引用,该变量包含要存储的数据。

scArray
[in] 对字符串数组变量的引用,该变量包含要存储的数据。

dwcArray
[in] 对 32 位双字数组变量的引用,该变量包含要存储的数据。

wcArray
[in] 对 16 位字数组变量的引用,该变量包含要存储的数据。

rect
[in] 对 CRect 变量的引用,该变量包含要存储的数据。

lpPoint
[in] 对指针的引用,该指针指向包含要存储的数据的 POINT 变量。

pData
[in] 指向包含要存储的数据的缓冲区的指针。

nBytes
[in] 指定 pData 参数指向的数据的大小(以字节为单位)

列表
[in] 对 CObList 变量的引用,该变量包含要存储的数据。

obj
[in] 对 CObject 变量的引用,该变量包含要存储的数据。

pObj
[in] 指向指针的指针,被指向的指针指向包含要存储的数据的 CObject 变量。

返回值

若成功,则为 TRUE;否则为 FALSE。

备注

若要写入注册表,必须在创建 CSettingsStore 对象时将 bReadOnly 设置为非零值。 有关详细信息,请参阅 CSettingsStore::CSettingsStore

另请参阅

层次结构图

CWinAppEx 类