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

    完整代码:单击下载

  • 相关阅读:
    操作系统进程通信
    操作系统进程调度
    java中的变量
    java移位运算符
    String, StringBuffer, StringBuilder 的区别
    多线程相关问题汇总
    java内存管理与GC机制(二)
    java内存管理与GC机制(一)
    进程与线程的理解
    Liferay7使用maven引入第三方jar包
  • 原文地址:https://www.cnblogs.com/mondol/p/1452283.html
Copyright © 2020-2023  润新知