基于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);
        };
    };
};

 

完整代码:单击下载

posted on 2009-05-07 23:01  Frank.Cui  阅读(786)  评论(0编辑  收藏  举报