windows注册表优化大全 (windows注册表实用教程)

前面两篇闲聊Windows注册表-基础 和 闲聊Windows注册表-工具 讲了一些注册表方面的基本知识和相关工具,这些基本是停留在使用层面上的,今天讲一点稍微深入的,可能需要有一点儿编程经验。用过注册表编辑的同学都会发现添加值时,注册表工具都会有一个右键菜单让你选择键值类型,如下图:

windows注册表操作大全,windows注册表使用教程

新建键和值

其中新建项其实就相当于在当前键下新建一个键,相当于文件系统的新建目录,新建值就有多种选项,最常规的就是上图中列出的:字符串、二进制值、DWORD整型值、QWORD整型值、多字符串、可扩充字符串。其中DWORD是指4字节的整型值,QWORD是指8字节的整型值,字符串有三种,都是Unicode的字符串,其中”字符串“就是一般的字符串,”可扩充字符串“一般是指带有环境变量的字符串,”多字符串“是字符串数组,其每个字符串都是0结尾,最后以双0结尾;二进制值通常是指无法用上述几种分类的或者比较量大的数据,直接按字节码原生态的保存的类型;其实所有这些类型在注册表文件内部都是二进制的哈,只是外在解释不一样而已。来看看微软对这些类型是如何分类的:

//
//
// Predefined Value Types.
//

#define REG_NONE                    ( 0 )   // No value type
#define REG_SZ                      ( 1 )   // Unicode nul terminated string
#define REG_EXPAND_SZ               ( 2 )   // Unicode nul terminated string
                                            // (with environment variable references)
#define REG_BINARY                  ( 3 )   // Free form binary
#define REG_DWORD                   ( 4 )   // 32-bit number
#define REG_DWORD_LITTLE_ENDIAN     ( 4 )   // 32-bit number (same as REG_DWORD)
#define REG_DWORD_BIG_ENDIAN        ( 5 )   // 32-bit number
#define REG_LINK                    ( 6 )   // Symbolic Link (unicode)
#define REG_MULTI_SZ                ( 7 )   // Multiple Unicode strings
#define REG_RESOURCE_LIST           ( 8 )   // Resource list in the resource map
#define REG_FULL_RESOURCE_DESCRIPTOR ( 9 )  // Resource list in the hardware description
#define REG_RESOURCE_REQUIREMENTS_LIST ( 10 )
#define REG_QWORD                   ( 11 )  // 64-bit number
#define REG_QWORD_LITTLE_ENDIAN     ( 11 )  // 64-bit number (same as REG_QWORD)

上面有不常见的REG_FULL_RESOURCE_DESCRIPTOR和REG_RESOURCE_REQUIREMENTS_LIST类型,通常是指计算机硬件资源信息的结构化数据,其实本质上还是二进制类型:

windows注册表操作大全,windows注册表使用教程

ResourceList类型

可能很多同学不知道,微软还搞了一些神秘的类型,比如下面这个:

windows注册表操作大全,windows注册表使用教程

高位为0xffff的类型

这种一般只有在硬件设备的Properties注册表下才能见到,而通常用户是无法打开看到这些值的,只有System权限的程序才能访问(如何使程序拥有System权限,可以参见我的文章使用chatGPT,以系统帐号运行进程,不想用程序的话也有一个工具NSudo*ex.e**能够用来访问)。

下回可以深扒一下这些特殊类型,有兴趣的同学点个赞哟!