基于WinCE注册表访问类(.NET代码风格)
今天有时间写了一个用于WinCE的注册表访问类(其实就是封装了API,技术含量不高,高手莫笑)。
类及方法的命名同.NET,相信熟悉.NET的朋友一定不陌生。使用方法简单,不用再调用那繁琐的API了。
#pragma once
namespace MoodSunshiny
{
/*
* 注册表操作相关函数
* 2009.05.06 By Frank
* Http://Www.MoodSun.Cn/
*/
namespace Registry
{
#pragma region 类型定义
//指定在注册表中存储值时所用的数据类型,或标识注册表中某个值的数据类型。
typedef enum RegistryValueKind
{
//指示一个不受支持的注册表数据类型。
RVK_Unknown = 0,
//指定一个以 Null 结尾的字符串。此值与 Win32 API 注册表数据类型 REG_SZ 等效。
RVK_String = 1,
//指定一个以 NULL 结尾的字符串,该字符串中包含对环境变量(如 %PATH%,当值被检索时,就会展开)的未展开的引用。此值与 Win32 API
//注册表数据类型 REG_EXPAND_SZ 等效。
RVK_ExpandString = 2,
//指定任意格式的二进制数据。此值与 Win32 API 注册表数据类型 REG_BINARY 等效。
RVK_Binary = 3,
//指定一个 32 位二进制数。此值与 Win32 API 注册表数据类型 REG_DWORD 等效。
RVK_DWord = 4,
//指定一个以 NULL 结尾的字符串数组,以两个空字符结束。此值与 Win32 API 注册表数据类型 REG_MULTI_SZ 等效。
RVK_MultiString = 7,
//指定一个 64 位二进制数。此值与 Win32 API 注册表数据类型 REG_QWORD 等效。
RVK_QWord = 11,
};
#pragma endregion
/*
* 表示 Windows 注册表中的项级节点。此类是注册表封装。
*/
class CRegistry
{
private:
HKEY m_HkeyHandle; //注册表键句柄
CRegistry();
public:
/*创建对象实例*/
static CRegistry* _Create(HKEY hKey);
/*释放对象资源*/
void Release();
//定义文档的类型(或类)以及与那些类型关联的属性。该字段读取 Windows 注册表基项 HKEY_CLASSES_ROOT。
static CRegistry* ClassesRoot();
//包含有关当前用户首选项的信息。该字段读取 Windows 注册表基项 HKEY_CURRENT_USER
static CRegistry* CurrentUser();
//包含本地计算机的配置数据。该字段读取 Windows 注册表基项 HKEY_LOCAL_MACHINE。
static CRegistry* LocalMachine();
//包含有关默认用户配置的信息。该字段读取 Windows 注册表基项 HKEY_USERS。
static CRegistry* Users();
/*将对项和它的子项作出的改动实际写入磁盘*/
void Flush();
/*检索当前项的子项数目*/
DWORD _SubKeyCount();
__declspec(property(get=_SubKeyCount)) DWORD SubKeyCount;
/*检索项中值的计数*/
DWORD _ValueCount();
__declspec(property(get=_ValueCount)) DWORD ValueCount;
/*检索与指定名称关联的值的注册表数据类型。*/
RegistryValueKind GetValueKind(LPCTSTR lpstrName);
/*
* 检索与指定名称关联的值。
* lpValue:读取到的值
* dwValueMaxSize:存储值的缓冲区最大大小或如果为NULL则返回值的长度
*/
BOOL GetValue(LPCTSTR lpstrName, LPVOID lpValue, DWORD *dwValueMaxSize);
/*使用指定的注册表数据类型设置注册表项中的名称/值对的值。*/
BOOL SetValue(LPCTSTR lpstrName, LPVOID lpValue, DWORD dwValueSize, RegistryValueKind valueKind);
/*创建一个新子项或打开一个现有子项以进行写访问。*/
CRegistry* CreateSubKey(LPCTSTR lpstrSubKey);
/*删除指定的子项*/
BOOL DeleteSubKey(LPCTSTR lpstrSubKey);
/*检索指定的子项。*/
CRegistry* OpenSubKey(LPCTSTR lpstrSubKey);
};
};
};
namespace MoodSunshiny
{
/*
* 注册表操作相关函数
* 2009.05.06 By Frank
* Http://Www.MoodSun.Cn/
*/
namespace Registry
{
#pragma region 类型定义
//指定在注册表中存储值时所用的数据类型,或标识注册表中某个值的数据类型。
typedef enum RegistryValueKind
{
//指示一个不受支持的注册表数据类型。
RVK_Unknown = 0,
//指定一个以 Null 结尾的字符串。此值与 Win32 API 注册表数据类型 REG_SZ 等效。
RVK_String = 1,
//指定一个以 NULL 结尾的字符串,该字符串中包含对环境变量(如 %PATH%,当值被检索时,就会展开)的未展开的引用。此值与 Win32 API
//注册表数据类型 REG_EXPAND_SZ 等效。
RVK_ExpandString = 2,
//指定任意格式的二进制数据。此值与 Win32 API 注册表数据类型 REG_BINARY 等效。
RVK_Binary = 3,
//指定一个 32 位二进制数。此值与 Win32 API 注册表数据类型 REG_DWORD 等效。
RVK_DWord = 4,
//指定一个以 NULL 结尾的字符串数组,以两个空字符结束。此值与 Win32 API 注册表数据类型 REG_MULTI_SZ 等效。
RVK_MultiString = 7,
//指定一个 64 位二进制数。此值与 Win32 API 注册表数据类型 REG_QWORD 等效。
RVK_QWord = 11,
};
#pragma endregion
/*
* 表示 Windows 注册表中的项级节点。此类是注册表封装。
*/
class CRegistry
{
private:
HKEY m_HkeyHandle; //注册表键句柄
CRegistry();
public:
/*创建对象实例*/
static CRegistry* _Create(HKEY hKey);
/*释放对象资源*/
void Release();
//定义文档的类型(或类)以及与那些类型关联的属性。该字段读取 Windows 注册表基项 HKEY_CLASSES_ROOT。
static CRegistry* ClassesRoot();
//包含有关当前用户首选项的信息。该字段读取 Windows 注册表基项 HKEY_CURRENT_USER
static CRegistry* CurrentUser();
//包含本地计算机的配置数据。该字段读取 Windows 注册表基项 HKEY_LOCAL_MACHINE。
static CRegistry* LocalMachine();
//包含有关默认用户配置的信息。该字段读取 Windows 注册表基项 HKEY_USERS。
static CRegistry* Users();
/*将对项和它的子项作出的改动实际写入磁盘*/
void Flush();
/*检索当前项的子项数目*/
DWORD _SubKeyCount();
__declspec(property(get=_SubKeyCount)) DWORD SubKeyCount;
/*检索项中值的计数*/
DWORD _ValueCount();
__declspec(property(get=_ValueCount)) DWORD ValueCount;
/*检索与指定名称关联的值的注册表数据类型。*/
RegistryValueKind GetValueKind(LPCTSTR lpstrName);
/*
* 检索与指定名称关联的值。
* lpValue:读取到的值
* dwValueMaxSize:存储值的缓冲区最大大小或如果为NULL则返回值的长度
*/
BOOL GetValue(LPCTSTR lpstrName, LPVOID lpValue, DWORD *dwValueMaxSize);
/*使用指定的注册表数据类型设置注册表项中的名称/值对的值。*/
BOOL SetValue(LPCTSTR lpstrName, LPVOID lpValue, DWORD dwValueSize, RegistryValueKind valueKind);
/*创建一个新子项或打开一个现有子项以进行写访问。*/
CRegistry* CreateSubKey(LPCTSTR lpstrSubKey);
/*删除指定的子项*/
BOOL DeleteSubKey(LPCTSTR lpstrSubKey);
/*检索指定的子项。*/
CRegistry* OpenSubKey(LPCTSTR lpstrSubKey);
};
};
};
完整代码:单击下载