CSettingsStore 类
包装 Windows API 函数,提供用于访问注册表的面向对象的接口。
语法
class CSettingsStore : public CObject
成员
公共构造函数
名称 | 描述 |
---|---|
CSettingsStore::CSettingsStore | 构造 CSettingsStore 对象。 |
公共方法
名称 | 描述 |
---|---|
CSettingsStore::Close | 关闭已打开的注册表项。 |
CSettingsStore::CreateKey | 打开指定的项,如果该项不存在,则创建它。 |
CSettingsStore::DeleteKey | 删除指定的项及其所有子项。 |
CSettingsStore::DeleteValue | 删除已打开项的指定值。 |
CSettingsStore::Open | 打开指定的项。 |
CSettingsStore::Read | 检索指定的项值的数据。 |
CSettingsStore::Write | 将值写入注册表中已打开的项下。 |
备注
成员函数 CreateKey
和 Open
非常相似。 如果注册表项已存在,则 CreateKey
和 Open
以相同的方式运行。 但是,如果注册表项不存在,则 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;
}
继承层次结构
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
会创建它。 否则它会打开该项。 然后 CreateKey
将 m_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。